2004-12-24 00:59:56 +00:00
|
|
|
#!/usr/bin/perl
|
|
|
|
#
|
|
|
|
# This tools is kind of a hack to be able to maintain the credits list of
|
|
|
|
# ScummVM in a single central location. We then generate the various versions
|
|
|
|
# of the credits in other places from this source. In particular:
|
|
|
|
# - The AUTHORS file
|
|
|
|
# - The gui/credits.h header file
|
|
|
|
# - The credits.xml file, part of the DocBook manual
|
|
|
|
# - Finally, credits.inc, from the website
|
|
|
|
# And maybe in the future, also "doc/10.tex", the LaTeX version of the README.
|
|
|
|
# Although that might soon be obsolete, if the manual evolves enough.
|
|
|
|
#
|
|
|
|
# Initial version written by Fingolfin in December 2004.
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
use Text::Wrap;
|
|
|
|
|
2004-12-25 16:03:36 +00:00
|
|
|
if ($Text::Wrap::VERSION < 2001.0929) {
|
|
|
|
die "Text::Wrap version >= 2001.0929 is required. You have $Text::Wrap::VERSION\n";
|
|
|
|
}
|
|
|
|
|
2004-12-24 00:59:56 +00:00
|
|
|
my $mode = "";
|
|
|
|
my $max_name_width;
|
2005-12-19 02:23:01 +00:00
|
|
|
|
|
|
|
# Count the level in the section hierarchy, i.e. how deep we are currently nested
|
|
|
|
# in terms of 'sections'.
|
|
|
|
my $section_level = 0;
|
|
|
|
|
|
|
|
# Count how many sections there have been on this level already
|
|
|
|
my @section_count = ( 0, 0, 0 );
|
2004-12-24 00:59:56 +00:00
|
|
|
|
|
|
|
if ($#ARGV >= 0) {
|
2005-03-22 20:16:02 +00:00
|
|
|
$mode = "TEXT" if ($ARGV[0] eq "--text"); # AUTHORS file
|
2004-12-24 00:59:56 +00:00
|
|
|
$mode = "HTML" if ($ARGV[0] eq "--html"); # credits.inc (for use on the website)
|
|
|
|
$mode = "CPP" if ($ARGV[0] eq "--cpp"); # credits.h (for use by about.cpp)
|
|
|
|
$mode = "XML" if ($ARGV[0] eq "--xml"); # credits.xml (DocBook)
|
2005-03-22 20:16:02 +00:00
|
|
|
$mode = "RTF" if ($ARGV[0] eq "--rtf"); # Credits.rtf (Mac OS X About box)
|
2005-03-27 18:35:52 +00:00
|
|
|
$mode = "TEX" if ($ARGV[0] eq "--tex"); # 10.tex (LaTeX)
|
2004-12-24 00:59:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if ($mode eq "") {
|
2006-01-25 17:54:28 +00:00
|
|
|
print STDERR "Usage: $0 [--text | --html | --cpp | --xml | --rtf]\n";
|
2005-03-22 20:16:02 +00:00
|
|
|
print STDERR " Just pass --text / --html / --cpp / --xml / --rtf as parameter, and credits.pl\n";
|
2004-12-24 00:59:56 +00:00
|
|
|
print STDERR " will print out the corresponding version of the credits to stdout.\n";
|
|
|
|
exit 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
$Text::Wrap::unexpand = 0;
|
|
|
|
if ($mode eq "TEXT") {
|
|
|
|
$Text::Wrap::columns = 78;
|
|
|
|
$max_name_width = 21; # The maximal width of a name.
|
|
|
|
} elsif ($mode eq "CPP") {
|
|
|
|
$Text::Wrap::columns = 48; # Approx.
|
|
|
|
}
|
|
|
|
|
|
|
|
# Convert HTML entities to ASCII for the plain text mode
|
2005-03-22 20:16:02 +00:00
|
|
|
sub html_entities_to_ascii {
|
2004-12-24 00:59:56 +00:00
|
|
|
my $text = shift;
|
|
|
|
|
|
|
|
# For now we hardcode these mappings
|
|
|
|
# á -> a
|
|
|
|
# é -> e
|
2005-11-13 03:33:20 +00:00
|
|
|
# ó -> o
|
2004-12-24 00:59:56 +00:00
|
|
|
# ø -> o
|
|
|
|
# ö -> o / oe
|
2005-05-09 21:21:21 +00:00
|
|
|
# ä -> a
|
2004-12-24 00:59:56 +00:00
|
|
|
# & -> &
|
2005-01-03 23:51:16 +00:00
|
|
|
# ł -> l
|
2004-12-24 00:59:56 +00:00
|
|
|
$text =~ s/á/a/g;
|
|
|
|
$text =~ s/é/e/g;
|
2005-11-13 03:33:20 +00:00
|
|
|
$text =~ s/ó/o/g;
|
2004-12-24 00:59:56 +00:00
|
|
|
$text =~ s/ø/o/g;
|
2005-01-03 23:51:16 +00:00
|
|
|
$text =~ s/ł/l/g;
|
2004-12-24 00:59:56 +00:00
|
|
|
|
2005-05-09 21:21:21 +00:00
|
|
|
$text =~ s/ä/a/g;
|
|
|
|
$text =~ s/ü/u/g;
|
2005-01-03 22:47:14 +00:00
|
|
|
# HACK: Torbj*o*rn but G*oe*ffringmann and R*oe*ver
|
2004-12-24 00:59:56 +00:00
|
|
|
$text =~ s/ör/or/g;
|
2005-01-03 22:47:14 +00:00
|
|
|
$text =~ s/ö/oe/g;
|
2004-12-24 00:59:56 +00:00
|
|
|
|
|
|
|
$text =~ s/&/&/g;
|
|
|
|
|
|
|
|
return $text;
|
|
|
|
}
|
|
|
|
|
2005-03-22 20:16:02 +00:00
|
|
|
# Convert HTML entities to RTF codes
|
|
|
|
sub html_entities_to_rtf {
|
|
|
|
my $text = shift;
|
|
|
|
|
|
|
|
$text =~ s/á/\\'87/g;
|
|
|
|
$text =~ s/é/\\'8e/g;
|
2005-12-19 02:23:01 +00:00
|
|
|
$text =~ s/ó/\\'97/g;
|
2005-03-22 20:16:02 +00:00
|
|
|
$text =~ s/ø/\\'bf/g;
|
|
|
|
$text =~ s/ł/\\uc0\\u322 /g;
|
2005-05-09 21:21:21 +00:00
|
|
|
|
|
|
|
$text =~ s/ä/\\'8a/g;
|
2005-03-22 20:16:02 +00:00
|
|
|
$text =~ s/ö/\\'9a/g;
|
2005-05-09 21:21:21 +00:00
|
|
|
$text =~ s/ü/\\'9f/g;
|
2005-03-22 20:16:02 +00:00
|
|
|
|
|
|
|
$text =~ s/&/&/g;
|
|
|
|
|
|
|
|
return $text;
|
|
|
|
}
|
|
|
|
|
2005-03-27 18:35:52 +00:00
|
|
|
# Convert HTML entities to TeX codes
|
|
|
|
sub html_entities_to_tex {
|
|
|
|
my $text = shift;
|
|
|
|
|
|
|
|
$text =~ s/á/\\'a/g;
|
|
|
|
$text =~ s/é/\\'e/g;
|
2005-12-19 02:23:01 +00:00
|
|
|
$text =~ s/ó/\\'o/g;
|
2005-03-27 18:35:52 +00:00
|
|
|
$text =~ s/ø/{\\o}/g;
|
2005-05-09 21:21:21 +00:00
|
|
|
$text =~ s/ł/{\\l}/g;
|
|
|
|
|
|
|
|
$text =~ s/ä/\\"a/g;
|
2005-03-27 18:35:52 +00:00
|
|
|
$text =~ s/ö/\\"o/g;
|
2005-05-09 21:21:21 +00:00
|
|
|
$text =~ s/ü/\\"u/g;
|
2005-03-27 18:35:52 +00:00
|
|
|
|
|
|
|
$text =~ s/&/\\&/g;
|
|
|
|
|
|
|
|
return $text;
|
|
|
|
}
|
|
|
|
|
2005-12-19 02:23:01 +00:00
|
|
|
#
|
|
|
|
# Small reference of the RTF commands used here:
|
|
|
|
#
|
|
|
|
# \fs28 switches to 14 point font (28 = 2 * 14)
|
|
|
|
# \pard reset to default paragraph properties
|
|
|
|
#
|
|
|
|
# \ql left-aligned text
|
|
|
|
# \qr right-aligned text
|
|
|
|
# \qc centered text
|
|
|
|
# \qj justified text
|
|
|
|
#
|
|
|
|
# \b turn on bold
|
|
|
|
# \b0 turn off bold
|
|
|
|
#
|
|
|
|
# For more information: <http://latex2rtf.sourceforge.net/rtfspec.html>
|
|
|
|
#
|
|
|
|
|
2004-12-24 00:59:56 +00:00
|
|
|
sub begin_credits {
|
|
|
|
my $title = shift;
|
|
|
|
|
|
|
|
if ($mode eq "TEXT") {
|
2005-03-22 20:16:02 +00:00
|
|
|
#print html_entities_to_ascii($title)."\n";
|
2005-03-27 18:35:52 +00:00
|
|
|
} elsif ($mode eq "TEX") {
|
|
|
|
print "% This file was generated by credits.pl. Do not edit by hand!\n";
|
|
|
|
print '\section{Credits}' . "\n";
|
2005-12-19 02:23:01 +00:00
|
|
|
print '\begin{trivlist}' . "\n";
|
2005-03-22 20:16:02 +00:00
|
|
|
} elsif ($mode eq "RTF") {
|
2005-03-23 16:19:05 +00:00
|
|
|
print '{\rtf1\mac\ansicpg10000' . "\n";
|
2005-03-22 20:16:02 +00:00
|
|
|
print '{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;}' . "\n";
|
2005-12-19 02:23:01 +00:00
|
|
|
print '{\colortbl;\red255\green255\blue255;\red0\green128\blue0;\red128\green128\blue128;}' . "\n";
|
2005-03-22 20:16:02 +00:00
|
|
|
print '\vieww6920\viewh15480\viewkind0' . "\n";
|
|
|
|
print "\n";
|
2004-12-24 00:59:56 +00:00
|
|
|
} elsif ($mode eq "CPP") {
|
|
|
|
print "// This file was generated by credits.pl. Do not edit by hand!\n";
|
|
|
|
print "static const char *credits[] = {\n";
|
|
|
|
} elsif ($mode eq "XML") {
|
|
|
|
print "<!-- This file was generated by credits.pl. Do not edit by hand! -->\n";
|
|
|
|
print "<appendix>\n";
|
|
|
|
print " <title>" . $title . "</title>\n";
|
|
|
|
print " <informaltable frame='none'>\n";
|
|
|
|
print " <tgroup cols='3' align='left' colsep='0' rowsep='0'>\n";
|
|
|
|
print " <colspec colname='start' colwidth='0.5cm'/>\n";
|
|
|
|
print " <colspec colname='name' colwidth='4cm'/>\n";
|
|
|
|
print " <colspec colname='job'/>\n";
|
|
|
|
print " <tbody>\n";
|
2005-03-27 18:35:52 +00:00
|
|
|
} elsif ($mode eq "HTML") {
|
2004-12-24 00:59:56 +00:00
|
|
|
print "<!-- This file was generated by credits.pl. Do not edit by hand! -->\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
sub end_credits {
|
|
|
|
if ($mode eq "TEXT") {
|
2005-03-27 18:35:52 +00:00
|
|
|
} elsif ($mode eq "TEX") {
|
2005-12-19 02:23:01 +00:00
|
|
|
print '\end{trivlist}' . "\n";
|
2005-03-27 18:35:52 +00:00
|
|
|
print "\n";
|
2005-03-22 20:16:02 +00:00
|
|
|
} elsif ($mode eq "RTF") {
|
|
|
|
print "}\n";
|
2004-12-24 00:59:56 +00:00
|
|
|
} elsif ($mode eq "CPP") {
|
|
|
|
print "};\n";
|
|
|
|
} elsif ($mode eq "XML") {
|
|
|
|
print " </tbody>\n";
|
|
|
|
print " </tgroup>\n";
|
|
|
|
print " </informaltable>\n";
|
|
|
|
print "</appendix>\n";
|
2005-03-27 18:35:52 +00:00
|
|
|
} elsif ($mode eq "HTML") {
|
2005-12-19 02:23:01 +00:00
|
|
|
print "\n";
|
2004-12-24 00:59:56 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
sub begin_section {
|
|
|
|
my $title = shift;
|
2005-12-19 02:23:01 +00:00
|
|
|
|
2004-12-24 00:59:56 +00:00
|
|
|
if ($mode eq "TEXT") {
|
2005-03-22 20:16:02 +00:00
|
|
|
$title = html_entities_to_ascii($title);
|
2005-12-19 02:23:01 +00:00
|
|
|
|
|
|
|
if ($section_level >= 2) {
|
|
|
|
$title .= ":"
|
|
|
|
}
|
|
|
|
|
|
|
|
print " " x $section_level . $title."\n";
|
|
|
|
if ($section_level eq 0) {
|
|
|
|
print " " x $section_level . "*" x (length $title)."\n";
|
|
|
|
} elsif ($section_level eq 1) {
|
|
|
|
print " " x $section_level . "-" x (length $title)."\n";
|
|
|
|
}
|
2005-03-27 18:35:52 +00:00
|
|
|
} elsif ($mode eq "TEX") {
|
2005-12-19 02:23:01 +00:00
|
|
|
print '\item \textbf{';
|
|
|
|
if ($section_level eq 0) {
|
|
|
|
print '\LARGE';
|
|
|
|
} elsif ($section_level eq 1) {
|
|
|
|
print '\large';
|
|
|
|
}
|
|
|
|
print " " . html_entities_to_tex($title) . "}\n";
|
|
|
|
print '\begin{list}{}{\setlength{\leftmargin}{0.2cm}}' . "\n";
|
2005-03-22 20:16:02 +00:00
|
|
|
} elsif ($mode eq "RTF") {
|
|
|
|
$title = html_entities_to_rtf($title);
|
|
|
|
|
|
|
|
# Center text
|
|
|
|
print '\pard\qc' . "\n";
|
2005-12-19 02:23:01 +00:00
|
|
|
print '\f0\b';
|
|
|
|
if ($section_level eq 0) {
|
|
|
|
print '\fs40 ';
|
|
|
|
} elsif ($section_level eq 1) {
|
|
|
|
print '\fs32 ';
|
|
|
|
}
|
|
|
|
|
|
|
|
# Insert an empty line before this section header, *unless*
|
|
|
|
# this is the very first section header in the file.
|
|
|
|
if ($section_level > 0 || @section_count[0] > 0) {
|
|
|
|
print "\\\n";
|
|
|
|
}
|
|
|
|
print '\cf2 ' . $title . "\n";
|
2005-03-22 20:16:02 +00:00
|
|
|
print '\f1\b0\fs24 \cf0 \\' . "\n";
|
2004-12-24 00:59:56 +00:00
|
|
|
} elsif ($mode eq "CPP") {
|
2005-12-19 02:23:01 +00:00
|
|
|
if ($section_level eq 0) {
|
|
|
|
# TODO: Would be nice to have a 'fat' or 'large' mode for
|
|
|
|
# headlines...
|
|
|
|
$title = html_entities_to_ascii($title);
|
|
|
|
print '"\\\\C\\\\c1""'.$title.'",' . "\n";
|
|
|
|
print '"\\\\C\\\\c0""",' . "\n";
|
|
|
|
} else {
|
|
|
|
$title = html_entities_to_ascii($title);
|
|
|
|
print '"\\\\C\\\\c1""'.$title.'",' . "\n";
|
|
|
|
}
|
2004-12-24 00:59:56 +00:00
|
|
|
} elsif ($mode eq "XML") {
|
|
|
|
print " <row><entry namest='start' nameend='job'>";
|
|
|
|
print "<emphasis role='bold'>" . $title . ":</emphasis>";
|
|
|
|
print "</entry></row>\n";
|
2005-03-27 18:35:52 +00:00
|
|
|
} elsif ($mode eq "HTML") {
|
2005-12-19 02:23:01 +00:00
|
|
|
if ($section_level eq 0) {
|
|
|
|
print "<div class='par-item'><div class='par-head'>$title</div><div class='par-content'> \n";
|
|
|
|
} elsif ($section_level eq 1) {
|
|
|
|
print "<div class='par-subhead'>$title</div>\n";
|
|
|
|
print "<div class='par-subhead-dots'> </div>\n";
|
|
|
|
print "<div class='par-subhead-content'>\n"
|
|
|
|
} else {
|
|
|
|
print "<span style='font-weight: bold'>$title:</span>\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# Implicit start of person list on section level 2
|
|
|
|
if ($section_level >= 2) {
|
|
|
|
begin_persons();
|
2004-12-24 00:59:56 +00:00
|
|
|
}
|
2005-12-19 02:23:01 +00:00
|
|
|
@section_count[$section_level]++;
|
|
|
|
$section_level++;
|
|
|
|
@section_count[$section_level] = 0;
|
2004-12-24 00:59:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub end_section {
|
2005-12-19 02:23:01 +00:00
|
|
|
$section_level--;
|
|
|
|
|
|
|
|
# Implicit end of person list on section level 2
|
|
|
|
if ($section_level >= 2) {
|
|
|
|
end_persons();
|
|
|
|
}
|
|
|
|
|
2004-12-24 00:59:56 +00:00
|
|
|
if ($mode eq "TEXT") {
|
2005-12-19 02:23:01 +00:00
|
|
|
# nothing
|
2005-03-27 18:35:52 +00:00
|
|
|
} elsif ($mode eq "TEX") {
|
2005-12-19 02:23:01 +00:00
|
|
|
print '\end{list}' . "\n";
|
2005-03-22 20:16:02 +00:00
|
|
|
} elsif ($mode eq "RTF") {
|
2005-12-19 02:23:01 +00:00
|
|
|
# nothing
|
2004-12-24 00:59:56 +00:00
|
|
|
} elsif ($mode eq "CPP") {
|
2005-12-19 02:23:01 +00:00
|
|
|
print '"\\\\C\\\\c0""",' . "\n";
|
2004-12-24 00:59:56 +00:00
|
|
|
} elsif ($mode eq "XML") {
|
|
|
|
print " <row><entry namest='start' nameend='job'> </entry></row>\n\n";
|
2005-03-27 18:35:52 +00:00
|
|
|
} elsif ($mode eq "HTML") {
|
2005-12-19 02:23:01 +00:00
|
|
|
if ($section_level eq 0) {
|
|
|
|
print "</div></div>\n";
|
|
|
|
} elsif ($section_level eq 1) {
|
|
|
|
print "</div>\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
sub begin_persons {
|
|
|
|
if ($mode eq "HTML") {
|
|
|
|
print "<table style='margin-left:2em; margin-bottom: 1em'>\n";
|
|
|
|
} elsif ($mode eq "TEX") {
|
2006-01-14 11:06:22 +00:00
|
|
|
print '\item \begin{tabular}[h]{p{0.3\linewidth}p{0.6\linewidth}}' . "\n";
|
2005-12-19 02:23:01 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
sub end_persons {
|
|
|
|
if ($mode eq "TEXT") {
|
|
|
|
print "\n";
|
|
|
|
} elsif ($mode eq "TEX") {
|
|
|
|
print ' \end{tabular}' . "\n";
|
|
|
|
} elsif ($mode eq "RTF") {
|
|
|
|
# nothing
|
|
|
|
} elsif ($mode eq "HTML") {
|
|
|
|
print "</table>\n";
|
2004-12-24 00:59:56 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
sub add_person {
|
|
|
|
my $name = shift;
|
|
|
|
my $nick = shift;
|
|
|
|
my $desc = shift;
|
2005-12-19 02:23:01 +00:00
|
|
|
my $tab;
|
2004-12-24 00:59:56 +00:00
|
|
|
|
|
|
|
if ($mode eq "TEXT") {
|
|
|
|
$name = $nick if $name eq "";
|
2005-03-22 20:16:02 +00:00
|
|
|
$name = html_entities_to_ascii($name);
|
|
|
|
$desc = html_entities_to_ascii($desc);
|
2004-12-24 00:59:56 +00:00
|
|
|
|
2005-12-19 02:23:01 +00:00
|
|
|
$tab = " " x ($section_level * 2 + 1);
|
|
|
|
printf $tab."%-".$max_name_width.".".$max_name_width."s", $name;
|
2004-12-24 00:59:56 +00:00
|
|
|
|
|
|
|
# Print desc wrapped
|
2005-12-19 02:23:01 +00:00
|
|
|
if (length $desc > 0) {
|
|
|
|
my $inner_indent = ($section_level * 2 + 1) + $max_name_width + 3;
|
|
|
|
my $multitab = " " x $inner_indent;
|
|
|
|
print " - " . substr(wrap($multitab, $multitab, $desc), $inner_indent);
|
|
|
|
}
|
|
|
|
print "\n";
|
2005-03-27 18:35:52 +00:00
|
|
|
} elsif ($mode eq "TEX") {
|
|
|
|
$name = $nick if $name eq "";
|
|
|
|
$name = html_entities_to_tex($name);
|
|
|
|
$desc = html_entities_to_tex($desc);
|
|
|
|
|
2005-12-19 02:23:01 +00:00
|
|
|
print " $name & \\textit{$desc}\\\\\n";
|
2005-03-22 20:16:02 +00:00
|
|
|
} elsif ($mode eq "RTF") {
|
|
|
|
$name = $nick if $name eq "";
|
|
|
|
$name = html_entities_to_rtf($name);
|
|
|
|
|
2005-12-19 02:23:01 +00:00
|
|
|
# Center text
|
|
|
|
print '\pard\qc' . "\n";
|
|
|
|
# Activate 1.5 line spacing mode
|
|
|
|
print '\sl360\slmult1';
|
|
|
|
# The name
|
2005-03-22 20:16:02 +00:00
|
|
|
print $name . "\\\n";
|
2005-12-19 02:23:01 +00:00
|
|
|
# Description using italics
|
|
|
|
if (length $desc > 0) {
|
|
|
|
$desc = html_entities_to_rtf($desc);
|
|
|
|
print '\pard\qc' . "\n";
|
|
|
|
print "\\cf3\\i " . $desc . "\\i0\\cf0\\\n";
|
|
|
|
}
|
2004-12-24 00:59:56 +00:00
|
|
|
} elsif ($mode eq "CPP") {
|
|
|
|
$name = $nick if $name eq "";
|
2005-03-22 20:16:02 +00:00
|
|
|
$name = html_entities_to_ascii($name);
|
2004-12-24 00:59:56 +00:00
|
|
|
|
2005-12-19 02:23:01 +00:00
|
|
|
print '"\\\\C\\\\c0""'.$name.'",' . "\n";
|
2004-12-24 00:59:56 +00:00
|
|
|
|
|
|
|
# Print desc wrapped
|
2005-12-19 02:23:01 +00:00
|
|
|
if (length $desc > 0) {
|
|
|
|
$desc = html_entities_to_ascii($desc);
|
|
|
|
print '"\\\\C\\\\c2""'.$desc.'",' . "\n";
|
|
|
|
}
|
2004-12-24 00:59:56 +00:00
|
|
|
} elsif ($mode eq "XML") {
|
|
|
|
$name = $nick if $name eq "";
|
|
|
|
print " <row><entry namest='name'>" . $name . "</entry>";
|
|
|
|
print "<entry>" . $desc . "</entry></row>\n";
|
2005-03-27 18:35:52 +00:00
|
|
|
} elsif ($mode eq "HTML") {
|
2004-12-24 00:59:56 +00:00
|
|
|
$name = "???" if $name eq "";
|
|
|
|
print "<tr>";
|
2005-12-19 02:23:01 +00:00
|
|
|
print "<td style='width:13em; padding:2px;'>".$name."</td>";
|
2004-12-24 00:59:56 +00:00
|
|
|
if ($nick ne "") {
|
2005-12-19 02:23:01 +00:00
|
|
|
print "<td style='width:10em; text-align: left;' class='news-author'>".$nick."</td>";
|
2004-12-24 00:59:56 +00:00
|
|
|
} else {
|
|
|
|
print "<td></td>";
|
|
|
|
}
|
|
|
|
print "<td>".$desc."</td>\n";
|
|
|
|
}
|
2005-12-19 02:23:01 +00:00
|
|
|
|
|
|
|
|
2004-12-24 00:59:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub add_paragraph {
|
|
|
|
my $text = shift;
|
2005-12-19 02:23:01 +00:00
|
|
|
my $tab;
|
2004-12-24 00:59:56 +00:00
|
|
|
|
|
|
|
if ($mode eq "TEXT") {
|
2005-12-19 02:23:01 +00:00
|
|
|
$tab = " " x ($section_level * 2 + 1);
|
2005-03-22 20:16:02 +00:00
|
|
|
print wrap($tab, $tab, html_entities_to_ascii($text))."\n";
|
2004-12-24 00:59:56 +00:00
|
|
|
print "\n";
|
2005-03-27 18:35:52 +00:00
|
|
|
} elsif ($mode eq "TEX") {
|
2005-12-19 02:23:01 +00:00
|
|
|
print '\item' . "\n";
|
2005-03-27 18:35:52 +00:00
|
|
|
print $text;
|
|
|
|
print "\n";
|
2005-03-22 20:16:02 +00:00
|
|
|
} elsif ($mode eq "RTF") {
|
2005-12-19 02:23:01 +00:00
|
|
|
# Center text
|
|
|
|
print '\pard\qc' . "\n";
|
2005-03-22 20:16:02 +00:00
|
|
|
print "\\\n";
|
2005-12-19 02:23:01 +00:00
|
|
|
print $text . "\\\n";
|
2004-12-24 00:59:56 +00:00
|
|
|
} elsif ($mode eq "CPP") {
|
2005-12-19 02:23:01 +00:00
|
|
|
my $line_start = '"\\\\C\\\\c0""';
|
2004-12-24 00:59:56 +00:00
|
|
|
my $line_end = '",';
|
2005-05-17 23:41:35 +00:00
|
|
|
print $line_start . $text . $line_end . "\n";
|
2004-12-24 00:59:56 +00:00
|
|
|
print $line_start . $line_end . "\n";
|
|
|
|
} elsif ($mode eq "XML") {
|
|
|
|
print " <row><entry namest='start' nameend='job'>" . $text . "</entry></row>\n";
|
|
|
|
print " <row><entry namest='start' nameend='job'> </entry></row>\n\n";
|
2005-03-27 18:35:52 +00:00
|
|
|
} elsif ($mode eq "HTML") {
|
2005-12-19 02:23:01 +00:00
|
|
|
print "<p style='margin-left:2em; margin-bottom: 1em'>";
|
2004-12-24 00:59:56 +00:00
|
|
|
print $text;
|
2005-12-19 02:23:01 +00:00
|
|
|
print "</p>\n";
|
2004-12-24 00:59:56 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#
|
|
|
|
# Now follows the actual credits data! The format should be clear, I hope.
|
2005-05-23 22:20:35 +00:00
|
|
|
# Note that people are sorted by their last name in most cases; in the
|
|
|
|
# 'Team' section, they are first grouped by category (Engine; porter; misc).
|
2004-12-24 00:59:56 +00:00
|
|
|
#
|
|
|
|
|
|
|
|
begin_credits("Credits");
|
2005-12-19 02:23:01 +00:00
|
|
|
begin_section("ScummVM Team");
|
|
|
|
begin_section("Project Leaders");
|
|
|
|
begin_persons();
|
|
|
|
add_person('James Brown', 'ender', "");
|
2006-03-24 17:40:34 +00:00
|
|
|
add_person('Max Horn', 'Fingolfin', "");
|
2006-04-09 14:51:47 +00:00
|
|
|
add_person("Eugene Sandulenko", "sev", "");
|
2005-12-19 02:23:01 +00:00
|
|
|
end_persons();
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
|
|
|
|
begin_section("Engine Teams");
|
|
|
|
begin_section("SCUMM");
|
|
|
|
add_person("Torbjörn Andersson", "eriktorbjorn", "");
|
|
|
|
add_person('James Brown', 'ender', "");
|
|
|
|
add_person("Jonathan Gray", "khalek", "");
|
|
|
|
add_person('Max Horn', 'Fingolfin', "");
|
|
|
|
add_person("Travis Howell", "Kirben", "");
|
|
|
|
add_person("Paweł Kołodziejski", "aquadran", "Codecs, iMUSE, Smush, etc.");
|
2005-12-31 00:14:21 +00:00
|
|
|
add_person("Eugene Sandulenko", "sev", "FT INSANE, MM NES, MM C64, game detection, Herc/CGA");
|
2005-12-19 02:23:01 +00:00
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("HE");
|
|
|
|
add_person("Jonathan Gray", "khalek", "");
|
|
|
|
add_person("Travis Howell", "Kirben", "");
|
|
|
|
add_person("Gregory Montoir", "cyx", "");
|
|
|
|
add_person("Eugene Sandulenko", "sev", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("BASS"); # Beneath a Steel Sky
|
|
|
|
add_person("Robert Göffringmann", "lavosspawn", "");
|
|
|
|
add_person("Oliver Kiehl", "olki", "");
|
|
|
|
add_person("Joost Peters", "joostp", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Broken Sword 1");
|
|
|
|
add_person("Robert Göffringmann", "lavosspawn", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Broken Sword 2");
|
|
|
|
add_person("Torbjörn Andersson", "eriktorbjorn", "");
|
|
|
|
add_person("Jonathan Gray", "khalek", "");
|
|
|
|
end_section();
|
|
|
|
|
2006-02-22 22:40:53 +00:00
|
|
|
begin_section("Cinematique evo 1");
|
|
|
|
add_person("Paweł Kołodziejski", "aquadran", "");
|
|
|
|
add_person("Gregory Montoir", "cyx", "");
|
|
|
|
add_person("Eugene Sandulenko", "sev", "");
|
|
|
|
end_section();
|
|
|
|
|
2005-12-19 02:23:01 +00:00
|
|
|
begin_section("FOTAQ"); # Flight of the Amazon Queen
|
|
|
|
add_person("David Eriksson", "twogood", "");
|
|
|
|
add_person("Gregory Montoir", "cyx", "");
|
|
|
|
add_person("Joost Peters", "joostp", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Gob");
|
|
|
|
add_person("Torbjörn Andersson", "eriktorbjorn", "");
|
2006-01-06 15:08:00 +00:00
|
|
|
add_person("Sven Hesse", "DrMcCoy", "");
|
2006-03-18 15:51:09 +00:00
|
|
|
add_person("Willem Jan Palenstijn", "wjp", "");
|
2005-12-19 02:23:01 +00:00
|
|
|
add_person("Eugene Sandulenko", "sev", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Kyra");
|
2006-01-10 02:58:08 +00:00
|
|
|
add_person("Oystein Eftevaag", "vinterstum", "");
|
2005-12-19 02:23:01 +00:00
|
|
|
add_person("Gregory Montoir", "cyx", "");
|
|
|
|
add_person("Johannes Schickel", "LordHoto", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("SAGA");
|
|
|
|
add_person("Torbjörn Andersson", "eriktorbjorn", "");
|
|
|
|
add_person("Andrew Kurushin", "ajax16384", "");
|
|
|
|
add_person("Eugene Sandulenko", "sev", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Simon");
|
|
|
|
add_person("Travis Howell", "Kirben", "");
|
|
|
|
add_person("Oliver Kiehl", "olki", "");
|
|
|
|
end_section();
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
|
|
|
|
begin_section("Backend Teams");
|
|
|
|
begin_section("Dreamcast");
|
|
|
|
add_person("Marcus Comstedt", "", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("SymbianOS");
|
|
|
|
add_person("Jurgen Braam", "SumthinWicked", "");
|
|
|
|
add_person("Lars Persson", "AnotherGuest", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("PalmOS");
|
|
|
|
add_person("Chris Apers", "chrilith ", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("PocketPC / WinCE");
|
|
|
|
add_person("Nicolas Bacca", "arisme", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Playstation 2");
|
|
|
|
add_person("Robert Göffringmann", "lavosspawn", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("PSP (PlayStation Portable)");
|
|
|
|
add_person("Joost Peters", "joostp", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("SDL (Win/Linux/OS X/etc.)");
|
|
|
|
add_person('Max Horn', 'Fingolfin', "");
|
2005-12-31 00:14:21 +00:00
|
|
|
add_person('Eugene Sandulenko', 'sev', "Asm routines, GFX layers");
|
2005-12-19 02:23:01 +00:00
|
|
|
end_section();
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Other subsystems");
|
|
|
|
begin_persons();
|
|
|
|
add_person("Jerome Fisher", "KingGuppy", "MT-32 emulator");
|
|
|
|
add_person("Jochen Hoenicke", "hoenicke", "Speaker & PCjr sound support, Adlib work");
|
|
|
|
end_persons();
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Website (content)");
|
|
|
|
add_paragraph("All active team members");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Retired Team Members");
|
|
|
|
begin_persons();
|
2006-02-22 22:40:53 +00:00
|
|
|
add_person("Tore Anderson", "tore", "Former Debian GNU/Linux maintainer");
|
2005-12-19 02:23:01 +00:00
|
|
|
add_person("Ralph Brorsen", "painelf", "Help with GUI implementation");
|
|
|
|
add_person("Jamieson Christian", "jamieson630", "iMUSE, MIDI, all things musical");
|
2006-02-22 22:40:53 +00:00
|
|
|
add_person('Vincent Hamm', 'yazoo', "Co-Founder, original CinE engine author");
|
2005-12-19 02:23:01 +00:00
|
|
|
add_person("Ruediger Hanke", "", "Port: MorphOS");
|
|
|
|
add_person("Felix Jakschitsch", "yot", "Zak256 reverse engineering");
|
|
|
|
add_person("Mutwin Kraus", "mutle", "Original MacOS porter");
|
|
|
|
add_person("Peter Moraliyski", "ph0x", "Port: GP32");
|
|
|
|
add_person('Jeremy Newman', 'laxdragon', "Former webmaster");
|
|
|
|
add_person('Ludvig Strigeus', 'ludde', "Original ScummVM and SimonVM author");
|
|
|
|
add_person("Lionel Ulmer", "bbrox", "Port: X11");
|
|
|
|
end_persons();
|
|
|
|
end_section();
|
2004-12-24 00:59:56 +00:00
|
|
|
end_section();
|
2004-12-26 00:20:22 +00:00
|
|
|
|
|
|
|
|
2005-12-19 02:23:01 +00:00
|
|
|
begin_section("Other contributions");
|
|
|
|
|
|
|
|
begin_section("Packages");
|
|
|
|
begin_section("AmigaOS 4");
|
|
|
|
add_person("Hans-Jörg Frieden", "", "");
|
|
|
|
add_person("Juha Niemimäki", "", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("BeOS");
|
|
|
|
add_person("Stefan Parviainen", "", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Debian GNU/Linux");
|
2006-01-30 19:08:26 +00:00
|
|
|
add_person("David Weinehall", "tao", "");
|
2005-12-19 02:23:01 +00:00
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Fedora / RedHat");
|
|
|
|
add_person("Willem Jan Palenstijn", "wjp", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Mac OS X");
|
|
|
|
add_person('Max Horn', 'Fingolfin', "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("OS/2");
|
|
|
|
add_person("Paul Smedley", "Creeping", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("PocketPC 2002");
|
|
|
|
add_person("Kostas Nakos", "knakos", '');
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("SlackWare");
|
|
|
|
add_person("Robert Kelsen", "", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Win32");
|
|
|
|
add_person("Travis Howell", "Kirben", "");
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Win64");
|
|
|
|
add_person("Chris Gray", "Psychoid", "");
|
|
|
|
end_section();
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Website (design)");
|
|
|
|
begin_persons();
|
|
|
|
add_person("Dobó Balázs", "draven", "Website design");
|
|
|
|
add_person("Yaroslav Fedevych", "jafd", "HTML/CSS for the website");
|
2006-03-09 13:25:52 +00:00
|
|
|
add_person("David Jensen", "Tyst", "SVG logo conversion");
|
2005-12-19 02:23:01 +00:00
|
|
|
add_person("Jean Marc", "", 'ScummVM logo');
|
|
|
|
end_persons();
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
begin_section("Code contributions");
|
|
|
|
begin_persons();
|
|
|
|
add_person("Stuart Caie", "", "Decoders for Simon 1 Amiga data files");
|
2006-01-27 21:59:48 +00:00
|
|
|
add_person("Paolo Costabel", "", "PSP port contributions");
|
2006-04-23 22:55:31 +00:00
|
|
|
add_person("Benjamin Haisch", "", "Encoder for DXA videos");
|
2005-12-19 02:23:01 +00:00
|
|
|
add_person("Janne Huttunen", "", "V3 actor mask support, Dig/FT SMUSH audio");
|
|
|
|
add_person("Kovács Endre János", "", "Several fixes for Simon1");
|
|
|
|
add_person("Jeroen Janssen", "", "Numerous readability and bugfix patches");
|
|
|
|
add_person("Andreas Karlsson", "Sprawl", "Initial port for EPOC/SymbianOS");
|
|
|
|
add_person("Claudio Matsuoka", "", 'Daily Linux builds');
|
2006-01-27 21:59:48 +00:00
|
|
|
add_person("Thomas Mayer", "", "PSP port contributions");
|
2005-12-19 02:23:01 +00:00
|
|
|
add_person("Mikesch Nepomuk", "", "MI1 VGA floppy patches");
|
|
|
|
add_person("Nicolas Noble", "pixels", "Config file and ALSA support");
|
|
|
|
add_person("", "Quietust", "Sound support for Amiga SCUMM V2/V3 games, MM NES support");
|
|
|
|
add_person("Andreas Röver", "", "Broken Sword 1/2 MPEG2 cutscene support");
|
|
|
|
add_person("Edward Rudd", "", "Fixes for playing MP3 versions of MI1/Loom audio");
|
|
|
|
add_person("Daniel Schepler", "", "Final MI1 CD music support, initial Ogg Vorbis support");
|
|
|
|
add_person("André Souza", "", "SDL-based OpenGL renderer");
|
|
|
|
add_person("Tim ???", "realmz", "Initial MI1 CD music support");
|
|
|
|
end_persons();
|
|
|
|
end_section();
|
|
|
|
|
|
|
|
add_paragraph("And to all the contributors, users, and beta testers we've missed. Thanks!");
|
2004-12-26 00:20:22 +00:00
|
|
|
|
2004-12-24 00:59:56 +00:00
|
|
|
end_section();
|
|
|
|
|
2004-12-26 00:20:22 +00:00
|
|
|
|
2004-12-24 00:59:56 +00:00
|
|
|
# HACK!
|
2006-01-16 18:25:29 +00:00
|
|
|
$max_name_width = 16;
|
2004-12-26 00:20:22 +00:00
|
|
|
|
2004-12-24 00:59:56 +00:00
|
|
|
begin_section("Special thanks to");
|
2005-12-19 02:23:01 +00:00
|
|
|
begin_persons();
|
|
|
|
add_person("Sander Buskens", "", "For his work on the initial reversing of Monkey2");
|
|
|
|
add_person("", "Canadacow", "For the original MT-32 emulator");
|
|
|
|
add_person("Kevin Carnes", "", "For Scumm16, the basis of ScummVM's older gfx codecs");
|
|
|
|
add_person("Ivan Dubrov", "", "For contributing the initial version of the Gobliiins engine");
|
2006-01-16 13:28:18 +00:00
|
|
|
add_person("Joachim Eberhard", "joachimeberhard", "For numerous contributions to documentation");
|
2005-12-19 02:23:01 +00:00
|
|
|
add_person("", "Jezar", "For his freeverb filter implementation");
|
|
|
|
add_person("Jim Leiterman", "", "Various info on his FM-TOWNS/Marty SCUMM ports");
|
|
|
|
add_person("", "lloyd", "For deep tech details about C64 Zak & MM");
|
|
|
|
add_person("Jimmi Thøgersen", "", "For ScummRev, and much obscure code/documentation");
|
|
|
|
add_person("", "Tristan", "For additional work on the original MT-32 emulator");
|
|
|
|
end_persons();
|
2004-12-26 00:20:22 +00:00
|
|
|
|
2004-12-24 00:59:56 +00:00
|
|
|
add_paragraph(
|
|
|
|
"Tony Warriner and everyone at Revolution Software Ltd. for sharing ".
|
|
|
|
"with us the source of some of their brilliant games, allowing us to ".
|
|
|
|
"release Beneath a Steel Sky as freeware... and generally being ".
|
|
|
|
"supportive above and beyond the call of duty.");
|
2004-12-26 00:20:22 +00:00
|
|
|
|
2004-12-24 00:59:56 +00:00
|
|
|
add_paragraph(
|
|
|
|
"John Passfield and Steve Stamatiadis for sharing the source of their ".
|
|
|
|
"classic title, Flight of the Amazon Queen and also being incredibly ".
|
|
|
|
"supportive.");
|
2004-12-26 00:20:22 +00:00
|
|
|
|
|
|
|
add_paragraph(
|
|
|
|
"Joe Pearce from The Wyrmkeep Entertainment Co. for sharing the source ".
|
|
|
|
"of their famous title Inherit the Earth and always prompt replies to ".
|
|
|
|
"our questions.");
|
|
|
|
|
2004-12-24 00:59:56 +00:00
|
|
|
add_paragraph(
|
|
|
|
"Aric Wilmunder, Ron Gilbert, David Fox, Vince Lee, and all those at ".
|
|
|
|
"LucasFilm/LucasArts who made SCUMM the insane mess to reimplement ".
|
|
|
|
"that it is today. Feel free to drop us a line and tell us what you ".
|
|
|
|
"think, guys!");
|
|
|
|
|
2005-12-19 02:23:01 +00:00
|
|
|
end_section();
|
|
|
|
|
2004-12-24 00:59:56 +00:00
|
|
|
end_credits();
|