smsvn -> ssc-hg glue: rearrange directory structure

This commit is contained in:
Devin J. Pohly
2013-06-10 15:38:43 -04:00
parent 51576d5942
commit 80057f53cd
3362 changed files with 0 additions and 0 deletions
+90
View File
@@ -0,0 +1,90 @@
[this is an alternate, separate system from "ConditionalBGA"]
Conditionals allow enabling BGAs or portions of BGAs based on a boolean
expression.
* Quick start
To only show a BGA on Wednesday:
[BGAnimation]
Condition=Weekday() == 3
[Layer1]
File=star
Command=x,100;y,200
...
To only between 10pm and 3am, use this Condition= line:
Condition=Hour() > 22 or Hour() < 3
Only if there are at least 2 stages left:
Condition=NumStagesLeft() >= 2
Don't show in demo or jukebox mode:
Condition=not IsDemonstration()
Only show if the current song is "Happy Birthday":
Condition=CurSong() == Song("Happy Birthday")
Only display the layer on even days:
math.mod(DayOfMonth(), 2) == 0
Only display the layer on odd days:
math.mod(DayOfMonth(), 2) == 0
Only display on April Fools:
Condition=MonthOfYear() == 4 and DayOfMonth() == 1
Only display on the final stage:
Condition=IsFinalStage()
Only if the "reverse" modifier is in use by player 1:
Condition=UsingModifier(1, "reverse")
Only if the "reverse" modifier is in use by player 1 or 2:
Condition=UsingModifier(1, "reverse") or UsingModifier(2, "reverse")
Only if either player got an AAA or better:
GetBestGrade() <= Grade("AAA")
* Advanced use
This can be applied to a single layer of a BGAnimation, by putting
the conditional in the appropriate [Layer] section.
[Layer1]
File=stage1
Condition=StageIndex() == 0
[Layer2]
File=stage2
Condition=StageIndex() == 1
[Layer3]
File=extra_stage
Condition=IsExtraStage()
* Complete function list:
MonthOfYear() month of year (1..12)
DayOfMonth() day of the month (1..31)
Hour() hours past midnight (0..23)
Minute() minutes after the hour (0..59)
Second() seconds after the minute (0..59)
Year() year (eg. 2004)
Weekday() days since Sunday (0..6)
DayOfYear() the number of days since January 1 (0..365)
StageStats info:
GetBestGrade() best grade of any active player (AAAA is 0, AAA is 1, etc)
GetWorstGrade() worst grade of any active player
OnePassed() returns true if either player passed
FullCombo(pn) returns true if player "pn" (0 or 1) got a full combo
MaxCombo(pn) returns the given player's max combo
GetGrade(pn) returns the given player's grade
Grade(grade) returns the grade number for a given string
OneGotGrade(pn,n)
+79
View File
@@ -0,0 +1,79 @@
*** EXPLANATION ***
BMA is merely a container. It is very expandable, though the
file table could definately use a facelift. Have fun.
Anything not specified in the file is considered null, and can
be used for any purpose (considering those area are not read,
so custom tags could be added after the main header but before
the file table.)
*** SOURCE HEADERS AND DEFINITIONS ***
Make sure you use these typedefs:
TypeDef Unsigned Char Int8;
TypeDef Signed Short Int16;
TypeDef Signed Int Int32;
And constants:
Const BlockSize = 4096;
And these libraries:
ZLib
*** HEADER ***
(hex)
Location Type Desc
---------------------------------------------------------------
00 String(6) "BAMarc"
06 Int16 0xFFFF, identifier
08 Int16 Version #, always 1 for now
0A Int16 Entry count
0C Int8 Entry Table Block
0D Int8 First File Block
0E Int16 Reserved
10 Int8 Creator's name length
11 String(31) Creator's name
30 Int8 Description length
31 String(63) Description
*** FILE TABLE ***
(at file offset: EntryTableBlock*BlockSize)
(hex)
Location Type Desc
---------------------------------------------------------------
00 Int32 File length, in bytes
04 Int16 File offset, in blocks
06 Int8 Filename length
07 Int8 File flags:
& 0x01 = unused
& 0x02 = unused
& 0x04 = unused
& 0x08 = unused
& 0x10 = unused
& 0x20 = ZLib compressed
& 0x40 = unused
& 0x80 = unused
08 String(24) Filename
*** FILE ***
The file's true offset is at (FileOffsetBlock*BlockSize) in the
file. If a file is ZLIB compressed, there will be an extra
string at the end of the chunk, in ASCII, that contains the
uncompressed file size in bytes.
OGG audio is not compressed in these files because they can be
loaded directly into memory and played by a sound library.
-=- Created by SaxxonPike, 2004-2005 -=-
+194
View File
@@ -0,0 +1,194 @@
********************************
Conditional BGA System.
********************************
--------------
Description
--------------
The conditional bga system will search for a .ini file in a theme
folder which will contain a series of BGA names and conditions upon
which they may be shown.
--------------
Filenames
--------------
Currently the following .ini names possible are:
ScreenEvaluation* ConditionalBGA.ini (will appear on the evaluation screen backgrounds)
--------------
Structure
--------------
[BGAName To Load]
Conditiontype:Condition
--------------
Conditions
--------------
SongTitle:
enter the name of a song title. be aware -- if you have multiples of a song with the
same name then you may want to enter more information like the artist and even song
foot ratings.
Example-
SongTitle:Paranoia Survivor Max
this will show the BGA only if PSM is available.
SongArtist:
enter the name of an artist, any song which matches the artist name will display the bga.
Example-
SongArtist:Naoki
all songs where the artist is Naoki will show the BGA
Clear:
clear will show the bga under one of four conditions:
* true - this will show if the song was cleared
* false - this will show if the song was failed
* fullcombo - this will show if the song was full comboed
* brokencombo - this will show if the song was cleared but not fullcomboed
Example-
Clear:fullcombo
this will only show if one of the players fullcomboed the song.
ModDisallow:
moddisallow will ensure that the bga is NOT displayed if any of the players
have the option. At the time of writing (11/feb/2004) not all mods have been
supported, but certainly things like little are not available (ideal if you
want somebody to get a rewarding bga for clearing a hard song in heavy, but dont
want them getting it via using a mod like little).
You may specify multiple mods by seperating them with commas (,)
Example-
ModDisallow:little,nojumps,noholds
the bga will only show provided little, nojumps and noholds are not selected by any
player.
Grade:
grade will compare a players grade with their current grade if they have one
so you could have it display a BGA if a player AAA'd a track. You may seperate
grades via commas (,) which will indicate a grade history with the latest stage
being at the end of the list.
Example-
Grade:AAA,AAA,AAA
the above will show the bga only if the player has passed at least 3 stages and
one of the players got a AAA on each stage.
SongMonth:
the bga will only display if the current month matches. Months range from 0-11 with
0 being janurary and 11 being december.
Example-
SongMonth:2
the bga will only appear if its march.
SongDay:
the bga will only appear on a day in the month
Example-
SongDay:10
the bga only appears if it is the 10th day in the month.
Style:
the bga will only appear if the specified style is available. you can specify multiple
style by seperating them with commas (,)
Example-
Style:double,single
this will display the BGA only if the style is in double or single.
SongRating:
the bga will only show if one of the players is in a difficulty matching that specified
you may specify multiple ratings by seperating them with a comma (,)
Example-
SongRating:heavy,light
this will show the bga only if a player played heavy or light notes.
SongDifficulty:
if a player was playing a song with a footrating specified then the bg will display
you can seperate difficulties with commas (,) you can specify ranges like the following:
1-3 this is the same as writing 1,2,3 also you may check for ratings and greater for
example: 9+ will check for all catastrophic songs.
Example-
SongDifficulty:SongDifficulty:1-3,5,9+
this will show the bga if the songs difficulty is 1,2,3,5,9(and onwards)
------------------
Overriding
------------------
If there are several bga's listed in a file, and the conditons specified are met
for more than one bga, the one listed nearest to the end of the file will have priority.
------------------
Mixing Conditions
------------------
All conditions are mixable, for instance you may check if a song is in Expert AND if its
title is G2.
-----------------
Examples
-----------------
//AAA three tracks in a row (your 3rd evaluation screen will have this)
[ScreenEvaluationStage AAA3]
Grade:AAA,AAA,AAA
// clear G2 in maniac
[ScreenEvaluationStage G2]
SongTitle:g2
SongRating:Heavy
Clear:true
ModDisallow:little,nojumps,noholds
// full combo sweet in heavy on the 15th march
[ScreenEvaluationStage 1503]
SongTitle:sweet
SongArtist:dj evil
SongRating:Heavy
SongDay:15
SongMonth:2 // months range from 0 - 11
Clear:maxcombo
-----------------
Version History
-----------------
11/feb/2004
Initial Version, Support for SongTitle,SongArtist,SongRating,
SongDay,SongMonth,Clear,Grade,ModDisallow,Style and SongDifficulty.
------------
Contact
------------
This feature was initially created by:
frieza [letters_q (at) hotmail.com]
and is maintained by:
frieza [letters_q (at) hotmail.com]
+340
View File
@@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
+142
View File
@@ -0,0 +1,142 @@
The following license applies to most of the StepMania codebase:
******************************************************************************
StepMania is (c) Chris Danford, the StepMania development team, et al.
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, and/or sell copies of the Software, and to permit persons to
whom the Software is furnished to do so, provided that the above
copyright notice(s) and this permission notice appear in all copies of
the Software and that both the above copyright notice(s) and this
permission notice appear in supporting documentation.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
******************************************************************************
RageSurface_Load_GIF contains code from Xpaint under the following license:
Copyright 1990, 1991, 1993 David Koblas.
Copyright 1996 Torsten Martinsen.
Permission to use, copy, modify, and distribute this software
and its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies and that both that copyright notice and this permission
notice appear in supporting documentation. This software is
provided "as is" without express or implied warranty.
******************************************************************************
Code in src/crypto/ is under the following permissive license:
PuTTY is copyright 1997-2001 Simon Tatham.
Portions copyright Robert de Bath, Joris van Rantwijk, Delian
Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas Barry,
Justin Bradford, and CORE SDI S.A.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
(the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
******************************************************************************
Code in RageSurfaceUtilsPalettize.cpp is under the following permissive
license:
Copyright (C) 1989, 1991 by Jef Poskanzer.
Copyright (C) 1997, 2000, 2002 by Greg Roelofs; based on an idea by
Stefan Schneider.
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided
that the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation. This software is provided "as is" without express or
implied warranty.
******************************************************************************
PCRE is distributed under the 3-clause BSD license:
Written by: Philip Hazel <[email protected]>
Copyright (c) 1997-2003 University of Cambridge
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the University of Cambridge nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
******************************************************************************
The MAD library (included with most Windows binary distributions), and
interface code in RageSoundReader_MP3, is under the GPL, available in
Copying.MAD. Support for this library can be disabled at compile-time.
******************************************************************************
NotesLoaderMidi contains code from STK under the following license:
Copyright 2003 Gary P. Scavone
LEGAL AND ETHICAL:
This software was designed and created to be made publicly available for
free, primarily for academic purposes, so if you use it, pass it on with
this documentation, and for free.
On April 19 2007, StepMania was granted an MIT license by Gary Scavone
for any STK code on the condition that all of the the STK
credits/disclaimers/copyrights from the README are retained in the
source code and in the project documentation.
+185
View File
@@ -0,0 +1,185 @@
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.stepmania.com"
xmlns="http://www.stepmania.com"
elementFormDefault="qualified">
<xs:element name="Lua">
<xs:complexType>
<xs:all>
<xs:element name="Singletons" type="Singletons" />
<xs:element name="Classes" type="Classes" />
<xs:element name="Namespaces" type="Namespaces" />
<xs:element name="GlobalFunctions" type="GlobalFunctions" />
<xs:element name="Enums" type="Enums" />
<xs:element name="Constants" type="Constants" />
<xs:element name="Date" type="xs:date" />
<xs:element name="Version" type="xs:string" />
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="Documentation">
<xs:complexType>
<xs:all>
<xs:element name="Classes" type="Classes" />
<xs:element name="Namespaces" type="Namespaces" />
<xs:element name="GlobalFunctions" type="GlobalFunctions" />
<xs:element name="Enums" type="Enums" />
</xs:all>
</xs:complexType>
</xs:element>
<xs:simpleType name="Identifier">
<xs:restriction base="xs:string">
<!-- Not totally valid since the following are not valid
identifiers in Lua.
and break do else elseif
end false for function if
in local nil not or
repeat return then true until
while
-->
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IdentifierOrTable">
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*|\{[a-zA-Z_][a-zA-Z0-9_]*\}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IdentifierOrNonemptyString">
<xs:restriction base="xs:string">
<!-- XXX: Doesn't support double quoted strings. -->
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*|'[^']+'" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IdentifierStringOrNumber">
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*|'[^']+'|[0-9]+" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ArgumentList">
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse" />
<!-- ((IdentifierOrTable Identifier(, IdentifierOrTable Identifier)*(, ...)?)|...)? -->
<xs:pattern value="((([a-zA-Z_][a-zA-Z0-9_]*|\{[a-zA-Z_][a-zA-Z0-9_]*\}) [a-zA-Z_][a-zA-Z0-9_]*( ?, ?([a-zA-Z_][a-zA-Z0-9_]*|\{[a-zA-Z_][a-zA-Z0-9_]*\}) [a-zA-Z_][a-zA-Z0-9_]*)*)( ?, ?\.\.\.)?|\.\.\.)?" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Singletons">
<xs:sequence>
<xs:element name="Singleton" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="Identifier" use="required" />
<xs:attribute name="class" type="Identifier" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:group name="DocumentationGroup">
<xs:sequence>
<xs:choice>
<xs:element name="Link" type="Link" />
<!-- HTML elements we want to let through. -->
<xs:element name="code" />
<xs:element name="br" />
</xs:choice>
</xs:sequence>
</xs:group>
<xs:complexType name="Description" mixed="true">
<xs:group ref="DocumentationGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:complexType>
<xs:complexType name="Classes">
<xs:sequence>
<xs:element name="Class" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Description" type="Description"
minOccurs="0" maxOccurs="1" />
<xs:element name="Function" type="Function"
minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="name" type="Identifier" use="required" />
<xs:attribute name="base" type="Identifier" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Namespaces">
<xs:sequence>
<xs:element name="Namespace" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Description" type="Description"
minOccurs="0" maxOccurs="1" />
<xs:element name="Function" type="Function"
minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="name" type="Identifier" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GlobalFunctions">
<xs:sequence>
<xs:element name="Function" type="Function"
minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Function" mixed="true">
<xs:group ref="DocumentationGroup" minOccurs="0" maxOccurs="unbounded" />
<xs:attribute name="name" type="Identifier" use="required" />
<xs:attribute name="return" type="IdentifierOrTable" use="optional" />
<xs:attribute name="arguments" type="ArgumentList" use="optional" />
</xs:complexType>
<xs:complexType name="Link" mixed="true">
<xs:group ref="DocumentationGroup" minOccurs="0" maxOccurs="unbounded"/>
<xs:attribute name="function" type="Identifier" use="optional" />
<xs:attribute name="class" type="Identifier" use="optional" />
</xs:complexType>
<xs:complexType name="Enums">
<xs:sequence>
<xs:element name="Enum" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Description" type="Description"
minOccurs="0" maxOccurs="1" />
<xs:element name="EnumValue" type="Constant"
minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="name" type="Identifier" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Constants">
<xs:sequence>
<xs:element name="Constant" type="Constant"
minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Constant">
<xs:attribute name="name" type="IdentifierOrNonemptyString" use="required" />
<xs:attribute name="value" type="IdentifierStringOrNumber" use="required" />
</xs:complexType>
</xs:schema>
<!-- vim: set tw=0: -->
+569
View File
@@ -0,0 +1,569 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:sm="http://www.stepmania.com"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="sm">
<xsl:output method="xml"
version="1.0"
encoding="UTF-8"
doctype-system="http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
media-type="application/xhtml+xml" />
<!-- Use xsltproc - -stringparam browser no (without a space) to generate the .html. -->
<xsl:param name="browser" select="yes" />
<xsl:template match="/">
<xsl:comment>This file is automatically generated. Do not edit it.</xsl:comment>
<html>
<head>
<title>StepMania LUA Information</title>
<style type="text/css">
th {
background-color: #CCCCFF;
border-style: solid;
border-width: thin;
padding: 2px;
font-size: 150%
}
table {
border-style: ridge;
border-collapse: collapse
}
td {
padding: 2px;
border-style: solid;
border-width: thin
}
hr {
width: 90%
}
code {
font-family: monospace
}
.code {
font-family: monospace
}
.returnTypeCell {
font-family: monospace;
text-align: right;
vertical-align: text-top;
width: 10em
}
.descriptionCell {
text-align: justify;
vertical-align: text-top
}
.descriptionName {
font-family: monospace;
font-weight: bold
}
.descriptionArguments {
font-family: monospace
}
.descriptionText {
text-indent: 2em;
margin-top: 0;
margin-bottom: 0
}
.primitiveType {
font-family: monospace;
color: #0000ff
}
a.classType:link {
font-family: monospace;
color: #cc0000
}
a.classType:visited {
font-family: monospace;
color: #440000
}
a.enumType:link {
font-family: monospace;
color: #cc0000
}
a.enumType:visited {
font-family: monospace;
color: #440000
}
.trigger {
cursor: pointer
}
.footer {
text-align: center
}
.validate {
border: 0;
width: 88px;
height: 31px
}
</style>
<script type="text/javascript">
function Open( id )
{
var imgid = 'img_' + id;
var listid = 'list_' + id;
var img = document.getElementById( imgid );
var list = document.getElementById( listid );
img.setAttribute( 'src', 'open.gif' );
list.style.display = 'block';
}
function OpenAndMove( classid, functionid )
{
Open( classid );
location.hash = classid + '_' + functionid;
}
function Toggle( id )
{
var imgid = 'img_' + id;
var listid = 'list_' + id;
var img = document.getElementById( imgid );
var list = document.getElementById( listid );
if( img.getAttribute('src') == 'closed.gif' )
{
img.setAttribute( 'src', 'open.gif' );
list.style.display = 'block';
}
else
{
img.setAttribute( 'src', 'closed.gif' );
list.style.display = 'none';
}
}
</script>
</head>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="sm:Lua">
<div>
<h2>StepMania LUA Information</h2>
<table>
<tr>
<th><a href="#Singletons">Singletons</a></th>
<th><a href="#Classes">Classes</a></th>
<th><a href="#Namespaces">Namespaces</a></th>
<th><a href="#GlobalFunctions">Global Functions</a></th>
<th><a href="#Enums">Enums</a></th>
<th><a href="#Constants">Constants</a></th>
</tr>
</table>
</div>
<xsl:apply-templates select="sm:Singletons" />
<xsl:apply-templates select="sm:Classes" />
<xsl:apply-templates select="sm:Namespaces" />
<xsl:apply-templates select="sm:GlobalFunctions" />
<xsl:apply-templates select="sm:Enums" />
<xsl:apply-templates select="sm:Constants" />
<hr />
<p class="footer">
Generated for <xsl:value-of select="sm:Version" /> on
<xsl:value-of select="sm:Date" />.
</p>
<p class="footer">
<xsl:choose>
<xsl:when test="$browser = 'no'">
<a href="http://validator.w3.org/check?uri=referer"><img
class="validate" src="http://www.w3.org/Icons/valid-xhtml10-blue"
alt="Valid XHTML 1.0 Strict" /></a>
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img
class="validate" src="http://www.w3.org/Icons/valid-css2-blue"
alt="Valid CSS Level 2.1" /></a>
</xsl:when>
<xsl:otherwise>
<a href="http://validator.w3.org/check?uri=referer"><img
class="validate" src="http://www.w3.org/Icons/valid-xml10-blue"
alt="Valid XML 1.0" /></a>
</xsl:otherwise>
</xsl:choose>
</p>
</xsl:template>
<xsl:template match="sm:Singletons">
<div>
<h3 id="Singletons">Singletons</h3>
<ul>
<xsl:for-each select="sm:Singleton">
<xsl:sort select="@name" />
<li>
<a class="classType" href="#{@class}" onclick="Open('{@class}')">
<xsl:value-of select="@name" />
</a>
</li>
</xsl:for-each>
</ul>
</div>
</xsl:template>
<xsl:template match="sm:Classes">
<div>
<h3 id="Classes">Classes</h3>
<xsl:apply-templates select="sm:Class">
<xsl:sort select="@name" />
</xsl:apply-templates>
</div>
</xsl:template>
<xsl:template match="sm:Namespaces">
<div>
<h3 id="Namespaces">Namespaces</h3>
<xsl:apply-templates select="sm:Namespace">
<xsl:sort select="@name" />
</xsl:apply-templates>
</div>
</xsl:template>
<xsl:variable name="docs" select="document('LuaDocumentation.xml')/sm:Documentation" />
<xsl:template match="sm:Class">
<xsl:variable name="name" select="@name" />
<div>
<a id="{@name}" class="trigger" onclick="Toggle('{@name}')">
<img src="closed.gif" id="img_{@name}" alt="" />
<xsl:text> Class </xsl:text>
<span class="descriptionName"><xsl:value-of select="@name" /></span>
</a>
<xsl:if test="@base != ''">
<span class="code"><xsl:text> : </xsl:text></span>
<a class="classType" href="#{@base}" onclick="Open('{@base}')">
<xsl:value-of select="@base" />
</a>
</xsl:if>
<div style="display: none" id="list_{@name}">
<xsl:apply-templates select="$docs/sm:Classes/sm:Class[@name=$name]/sm:Description">
<xsl:with-param name="class" select="$name" />
</xsl:apply-templates>
<table>
<tr><th colspan="2"><xsl:value-of select="$name" /> Member Functions</th></tr>
<xsl:apply-templates select="sm:Function">
<xsl:sort select="@name" />
<xsl:with-param name="path" select="$docs/sm:Classes/sm:Class[@name=$name]" />
<xsl:with-param name="class" select="$name" />
</xsl:apply-templates>
</table>
<br />
</div>
</div>
</xsl:template>
<xsl:template match="sm:Namespace">
<xsl:variable name="name" select="@name" />
<div>
<a id="{@name}" class="trigger" onclick="Toggle('{@name}')">
<img src="closed.gif" id="img_{@name}" alt="" />
<xsl:text> Namespace </xsl:text>
<span class="descriptionName"><xsl:value-of select="@name" /></span>
</a>
<div style="display: none" id="list_{@name}">
<xsl:apply-templates select="$docs/sm:Namespaces/sm:Namespace[@name=$name]/sm:Description">
<xsl:with-param name="class" select="$name" />
</xsl:apply-templates>
<table>
<tr><th colspan="2"><xsl:value-of select="$name" /> Functions</th></tr>
<xsl:apply-templates select="sm:Function">
<xsl:sort select="@name" />
<xsl:with-param name="path" select="$docs/sm:Namespaces/sm:Namespace[@name=$name]" />
<xsl:with-param name="class" select="$name" />
</xsl:apply-templates>
</table>
<br />
</div>
</div>
</xsl:template>
<xsl:template match="sm:GlobalFunctions">
<div>
<h3 id="GlobalFunctions">Global Functions</h3>
<table>
<tr><th colspan="2">Functions</th></tr>
<xsl:apply-templates select="sm:Function">
<xsl:sort select="@name" />
<xsl:with-param name="path" select="$docs/sm:GlobalFunctions" />
<xsl:with-param name="class" select="'GLOBAL'" />
</xsl:apply-templates>
</table>
</div>
</xsl:template>
<xsl:template name="processType">
<xsl:param name="type" />
<xsl:choose>
<xsl:when test="starts-with($type, '{')">
<xsl:text>{</xsl:text>
<xsl:call-template name="processType">
<xsl:with-param name="type" select="substring-before(
substring-after($type, '{'), '}')" />
</xsl:call-template>
<xsl:text>}</xsl:text>
</xsl:when>
<xsl:when test="$type='void' or
$type='int' or
$type='float' or
$type='string' or
$type='bool' or
$type='table' or
$type='color' or
$type='Enum'">
<span class="primitiveType">
<xsl:value-of select="$type" />
</span>
</xsl:when>
<xsl:when test="boolean(/sm:Lua/sm:Classes/sm:Class[@name=$type])">
<a class="classType" href="#{$type}" onclick="Open('{$type}')">
<xsl:value-of select="$type" />
</a>
</xsl:when>
<xsl:when test="boolean(/sm:Lua/sm:Enums/sm:Enum[@name=$type])">
<a class="enumType" href="#ENUM_{$type}" onclick="Open('{$type}')">
<xsl:value-of select="$type" />
</a>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$type" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="processArguments">
<xsl:param name="argumentList" />
<xsl:choose>
<xsl:when test="starts-with($argumentList, ' ')">
<xsl:call-template name="processArguments">
<xsl:with-param name="argumentList"
select="substring-after($argumentList, ' ')" />
</xsl:call-template>
</xsl:when>
<!-- Base cases. -->
<xsl:when test="$argumentList = '...'">
<xsl:text>...</xsl:text>
</xsl:when>
<xsl:when test="not(contains($argumentList, ','))">
<xsl:call-template name="processType">
<xsl:with-param name="type"
select="substring-before($argumentList, ' ')" />
</xsl:call-template>
<xsl:text> </xsl:text>
<xsl:value-of select="substring-after($argumentList, ' ')" />
</xsl:when>
<xsl:otherwise>
<xsl:variable name="firstParam"
select="substring-before($argumentList, ',')" />
<xsl:variable name="restParams"
select="substring-after($argumentList, ',')" />
<xsl:call-template name="processType">
<xsl:with-param name="type"
select="substring-before($firstParam, ' ')" />
</xsl:call-template>
<xsl:text> </xsl:text>
<xsl:value-of select="substring-after($firstParam, ' ')" /><xsl:text>, </xsl:text>
<!-- Recursive call. -->
<xsl:call-template name="processArguments">
<xsl:with-param name="argumentList" select="$restParams" />
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="sm:Function">
<xsl:param name="path" />
<xsl:param name="class" />
<xsl:variable name="name" select="@name" />
<xsl:variable name="elmt" select="$path/sm:Function[@name=$name]" />
<tr id="{$class}_{$name}">
<xsl:choose>
<!-- Check for documentation. -->
<xsl:when test="string($elmt/@name)=$name">
<td class="returnTypeCell">
<xsl:call-template name="processType">
<xsl:with-param name="type" select="$elmt/@return" />
</xsl:call-template>
</td>
<td class="descriptionCell">
<span class="descriptionName">
<xsl:value-of select="@name" />
</span>
<span class="descriptionArguments">
<xsl:text>( </xsl:text>
<xsl:call-template name="processArguments">
<xsl:with-param name="argumentList"
select="$elmt/@arguments" />
</xsl:call-template>
<xsl:text> )</xsl:text>
</span>
<p class="descriptionText">
<xsl:apply-templates select="$elmt" mode="print">
<xsl:with-param name="class" select="$class" />
</xsl:apply-templates>
</p>
</td>
</xsl:when>
<xsl:otherwise>
<td class="returnTypeCell" />
<td class="descriptionCell">
<span class="descriptionName"><xsl:value-of select="@name" /></span>
</td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:template>
<xsl:template match="sm:Function" mode="print">
<xsl:param name="class" />
<xsl:apply-templates>
<xsl:with-param name="curclass" select="$class" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="sm:Link">
<xsl:param name="curclass" />
<xsl:variable name="empty" select="string(current())=''" />
<xsl:choose>
<!-- Linking to a function in the current class/namespace. -->
<xsl:when test="string(@class)='' and string(@function)!=''">
<a class="classType" href="#{$curclass}_{@function}">
<xsl:if test="$empty">
<xsl:call-template name="sm:PrintLink">
<xsl:with-param name="class" select="$curclass" />
<xsl:with-param name="function" select="@function" />
</xsl:call-template>
</xsl:if>
<xsl:apply-templates />
</a>
</xsl:when>
<!-- Linking to a class/namespace. -->
<xsl:when test="string(@class)!='' and string(@function)=''">
<a class="classType" href="#{@class}" onclick="Open('{@class}')">
<xsl:if test="$empty">
<xsl:value-of select="@class" />
</xsl:if>
<xsl:apply-templates />
</a>
</xsl:when>
<!-- Linking to a global function or an enum. -->
<xsl:when test="(string(@class)='GLOBAL' or string(@class)='ENUM') and string(@function)!=''">
<a class="classType" href="#{@class}_{@function}" onclick="Open('{@function}')">
<xsl:if test="$empty">
<xsl:value-of select="@function" />
<xsl:if test="string(@class)='GLOBAL'">
<xsl:text>()</xsl:text>
</xsl:if>
</xsl:if>
<xsl:apply-templates />
</a>
</xsl:when>
<!-- Linking to a function in a class/namespace. -->
<xsl:when test="string(@class)!='' and string(@function)!=''">
<a class="classType" href="#{@class}_{@function}" onclick="OpenAndMove('{@class}','{@function}')">
<xsl:if test="$empty">
<xsl:call-template name="sm:PrintLink">
<xsl:with-param name="class" select="@class" />
<xsl:with-param name="function" select="@function" />
</xsl:call-template>
</xsl:if>
<xsl:apply-templates />
</a>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates /> <!-- Ignore this Link. -->
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="sm:PrintLink">
<xsl:param name="class" />
<xsl:param name="function" />
<xsl:value-of select="$class" />
<xsl:text>.</xsl:text>
<xsl:value-of select="$function" />
<xsl:text>()</xsl:text>
</xsl:template>
<xsl:template match="sm:Enums">
<div>
<h3 id="Enums">Enums</h3>
<xsl:apply-templates select="sm:Enum">
<xsl:sort select="@name" />
</xsl:apply-templates>
</div>
</xsl:template>
<xsl:template match="sm:Enum">
<xsl:variable name="name" select="@name" />
<div id="ENUM_{@name}">
<a class="trigger" onclick="Toggle('{@name}')">
<img src="closed.gif" id="img_{@name}" alt="" />
<xsl:text> Enum </xsl:text>
<span class="descriptionName"><xsl:value-of select="@name" /></span></a>
<div style="display: none" id="list_{@name}">
<xsl:apply-templates select="$docs/sm:Enums/sm:Enum[@name=$name]/sm:Description">
<xsl:with-param name="curclass" select="$name" />
</xsl:apply-templates>
<table>
<tr>
<th>Enum</th>
<th>Value</th>
</tr>
<xsl:for-each select="sm:EnumValue">
<xsl:sort data-type="number" select="@value" />
<tr class="code">
<td><xsl:value-of select="@name" /></td>
<td><xsl:value-of select="@value" /></td>
</tr>
</xsl:for-each>
</table>
<br />
</div>
</div>
</xsl:template>
<xsl:template match="sm:Description">
<xsl:param name="class" />
<p>
<xsl:apply-templates>
<xsl:with-param name="curclass" select="$class" />
</xsl:apply-templates>
</p>
</xsl:template>
<xsl:template match="sm:Constants">
<div>
<h3 id="Constants">Constants</h3>
<table>
<tr>
<th>Constant</th>
<th>Value</th>
</tr>
<xsl:for-each select="sm:Constant">
<xsl:sort select="@name" />
<tr class="code">
<td><xsl:value-of select="@name" /></td>
<td><xsl:value-of select="@value" /></td>
</tr>
</xsl:for-each>
</table>
<br />
</div>
</xsl:template>
<!-- XXX: This is annoying, how can we tell xsl to just pass the html through?
Even more annoying is the fact that parameters aren't dynamically scoped
so we have to explicitly pass all parameters through <code>. -->
<xsl:template match="sm:code">
<xsl:param name="curclass" />
<code>
<xsl:apply-templates>
<xsl:with-param name="curclass" select="$curclass" />
</xsl:apply-templates>
</code>
</xsl:template>
<xsl:template match="sm:br"><br /></xsl:template>
</xsl:stylesheet>
<!-- vim: set tw=0: -->
File diff suppressed because it is too large Load Diff
+30
View File
@@ -0,0 +1,30 @@
Bits of possibly less-than-obvious advice:
archutils/ contains arch-specific code. This should contain code
shared by more than one arch/ driver.
arch/ contains drivers for specific features that can be better
implemented nonportably. Most drivers (all except sound) contain
default, portable implementations, so StepMania should work mostly
out-of-the-box on platforms that are supported by the supporting
libraries (particularly SDL); only a sound driver needs to be
written.
Avoid accessing other singleton classes from singleton destructors. That
introduces dependencies on the order of destruction, and can cause problems
if one of the singletons throws an exception.
This kills VC:
template<class T> static void YY( T opt ) { }
enum { A } a;
enum { A1 } b;
void XX() { YY(a); YY(b); }
foo.obj : fatal error LNK1179: invalid or corrupt file: duplicate COMDAT '?YY@@YAXW4__unnamed@@@Z'
It mangles the template incorrectly. Solution: don't use anonymous
enums as template parameters; give them a name.
+455
View File
@@ -0,0 +1,455 @@
PRELIMINARY - - - - - - - - 05/03/2004
Protocol version 4
But 0x04 will be its version for inter-protocol purposes.
This protocol is only intended to replace current protocol. Because current protocol
not expanable
SMLAN PROTCOL TCP/8765
Protcol is entirelly packaged in EzSockets Data Packets (use send and receive packet)
This will prevent any out-of-sync errors with future or past versions.
The protocol is impervious to fragmented, or bonded TCP packets.
Basic Representation:
Octet 0123 4 5
+----+-+---//--+
|ssss|C|Payload|
+----+-+---//--+
ssss - size of packet, handled by ezsockets (if you're using C++)
C - Command.
Payload - variable size based on command
The payload may contain more data than expected, i.e. new protocol version.
In the following protocol, the term size means the size of the chunk of data.
If the "size" is "NT" then that means it's a null-terminating string.
"MSN" most significant 4 bits (byte/16)
"LSN" least significant 4 bits (byte%16)
Note: Primary player is 0x0, secondary player is 0x1
CLIENT to SERVER protocol:
000: No Operation
Desc: This command will cause server to respond with a no op response.
Payload: None
Response: Server 001
001: No Operation Response
Desc: This command is used to respond to a no operation.
Payload: None
Response: None
002: Hello
Desc: This is the first packet from a client to server, stating below
information (NOTE: Names are no longer sent in this packet)
Payload:
Size Description:
1 Client protocol version
NT Name of build of StepMania
Response: Server 002
003: Game Start Request
Desc: This command is called once after most loading is done, and
again immediately before the sound starts.
Payload:
Size Description
MSN Primary player difficulty (feet) (0 for no player)
LSN Secondary player difficulty (feet) (0 for no player)
MSN Primary player difficulty (0=Beginner, 1=easy, etc.)
LSN Second player difficulty (0=Beginner, 1=easy, etc.)
MSN Start Position (0 is pre-sync, 1 is for sync)
LSN Reserved
NT Song Title
NT Song Subtitle
NT Song Artist
NT Course Title (If none exists; make it just a null)
NT Song Options (in string-format)
NT Primary Player's options (Null if non-existant)
NT Secondary Player's Options (Null if non-existant)
Response: Server 003
004: Game Over Notice
Desc: This command is sent when end of game is encounterd
Payload: None.
Response: None.
005: Game Status update
Desc: Updates game info for each step
Payload:
Size Description
MSN Player #
Protocol <= 2
LSN StepID
1: Miss
2: W5
3: W4
4: W3
5: W2
6: W1
7: LetGo
8: Held
Protocol >= 3
LSN StepID
1: HitMine
2: AvoidMine
3: Miss
4: W5
5: W4
6: W3
7: W2
8: W1
9: LetGo
10: Held
MSN Projected Grade (StepMania enum int)
LSN Reserved
4 Net-order long containing score.
2 Net-order int containing combo.
2 Net-order int containing health.
2 Net-order # containing offset
32767 would be DEAD on the note
If the user is hitting late, the # will be higher
It if the user is exactly 0.25 seconds off, the
number will be different by 500, if 0.5, it will be
different by 1000.
Response: None.
006: Style Update (PLEASE NOTE THIS HAS NOTHING TO DO WITH SERVER COMMAND 6)
Desc: This is sent when a style is chosen.
Size:
1 # of enabled players (1 means 1, 2 means 2)
1 Player # (0 means 1st, 1 means 2nd)
NT Player Name for #
(Additional player's and #'s) (enabled players ONLY)
Response: None
007: Chat message
Desc: The user typed a message for general chat.
Size:
NT Message
008: Request Start Game and Tell server existance/non existance of song.
Desc: The user selected a song on a Net-enabled selection
Size:
1 Usage of message
0: (in response to server 8) User has specified song
1: (in response to server 8) User does NOT have specified song
2: User requested a start game on given song
NT Song Title (As gotten by GetTranslitMainTitle)
NT Song Artist (As Gotten by GetTranslitArtist)
NT Song Subtitle (As gotten by GetTranslitSubTitle)
009: //Reserved
010: User entered/exited Network Music Selection Screen
Size:
1
0: exited ScreenNetSelectMusic
1: entered ScreenNetSelectMusic
2: **Not Sent**
3: entered options screen
4: exited the evaluation screen
5: entered evaluation screen
6: exited ScreenNetRoom
7: entered ScreenNetRoom
011: User has changed player options
Size:
NT Player 0's options
NT Player 1's options
012: SMOnline Packet. //SPECIAL CASE!!!
NOTE: The smonline packet is not defined here.
The SMLan packet 12 is a wrapper for the SMOnline packet.
This is so that we can have "protection" of sorts when
it comes to the coding of SMOnline, so we don't have to
use the lower level commands when dealing with SMOnline.
Size:
1 SMOnline command //This used to say 2, but it looks like 1 in all cases
<VARIABLE> SMOnline data
013: Reserved
SERVER to CLIENT protocol: (begins at 128)
NOTE: Server responses always add 128, thus a server response for no operation
is 128, not 000
000(128):No Operation
Desc: This command will cause server to respond with a no op response.
Payload: None
Response: Server 001
001(129):No Operation Response
Desc: This command is used to respond to a no operation.
Payload: None
Response: None
002(130):Server Hello Response
Desc: This introduces the server.
Payload:
Size Description
1 Server protocol version //NOTE: if protocol version is 128+, then this
server is an SMOnline server
NT Server Name
4 Random key ( at the moment only used for an alternate login method )
003(131):Allow Start
Desc: This will cause the client to start the game.
Payload: None
Response: None
004(132):Game over stats
Desc: this packet is send in response to the game over packet
it contains information regarding how well each player did.
Payload:
1 # of players sent in this packet (active players)
The way this works is to send every player's info for a given
field. Like every player's score will be sent first, then every
player's grade.
1 First player's player ID
<Other player's IDs>
4 Score
<Other player's scores>
1 Grade
<Other player's Grades>
1 Difficulty (0=beginner, 1=light, etc.)
<Other player's difficulties>
#this next chunk of step types is actually reversed
2 miss
<Other player's misses>
2 boo
<Other player's boos>
2 good (All players)
2 great (All players)
2 perfect (All players)
2 marvelous (All players)
2 ok (All players)
2 max_combo (All players)
NT Player's options
<Other player's options>
005:(133)Scoreboard update
Desc: This will update the client's scoreboard.
Payload:
Size
1 Which section
0: Names
1: Combos
2: Projected Grades
1 # of players to display
If Names, then:
1 Player in first place's index
1 Player in second place's index
...
1 Last player's index
If Combos, then:
2 First player's combo
2 Second Player's combo
...
2 Last player's combo
If Project grades
1 Player 1's grade (in the same format used when reporting projected grades)
1 Player 2's grade
...
1 Last player's projected grade
006:(134)System Message (PLEASE NOTE THIS HAS NOTHING TO DO WITH CLIENT COMMAND 6)
Desc: Send system message to user
Payload:
Size Description
NT Message
007:(135)Chat Message
Desc: Add a chat message to the chat window on some StepMania screens.
Payload:
Size Description
NT Message
008:(136)Tell client to start song/ask if client has song
Desc: The user selected a song on a Net-enabled selection
Size:
1 Usage of message
0: See if client has song
1: See if client has song, if so, scroll to song
2: See if client has song, if so, scroll to song, and play that song
3: Blindly start song
NT Song Title (As gotten by GetTranslitMainTitle)
NT Song Artist (As Gotten by GetTranslitArtist)
NT Song Subtitle (As gotten by GetTranslitSubTitle)
009:(137)Update user list
Desc: This sends all the users currently connected
Size:
1 Max # of players
1 # of players in this packet
1 Player 0's status
NT Player 0's name (if there is no player here... make it a null (""))
1 Player 1's status
NT Player 1's name
...
1 Last player's status
NT Last player's name
Status:
0 Inative (no info on this user yet)
1 Active (you know who it is)
2 In Selection Screen
3 In Options
4 In Evaluation
010:(138)Force change to Networking select music screen.
Size:
NT Set Specified gametype
NT Set Specified style
011:(139)Reserved
012:(140)SMOnline Packet. //SPECIAL CASE!!!
NOTE: The smonline packet is not defined here.
The SMLan packet 12 is a wrapper for the SMOnline packet.
This is so that we can have "protection" of sorts when
it comes to the coding of SMOnline, so we don't have to
use the lower level commands when dealing with SMOnline.
Size:
1 SMOnline command
<VARIABLE> SMOnline data
013:(141)Formatted information packet
Desc: Send formatted information regarding the server back to the player.
NOTE: The purpose of this function is alternatively to be a broadcast
packet. (You can expect it via UDP broadcast)
Size:
NT Server Name
2 Port the server is listening on
2 Number of players connected
014:(142)Attack Client
Size:
1 Player Number
4 Time to Last (in MS)
NT Text describing modifiers.
----------------------------------------------------------------
Client SMOnline packets:
000: Send Login Information
Size:
1 Player Number
1 Encryption text
0: MD5 hash
1: MD5 ( MD5 hash + salt ) (salt is plain text, base 10 string )
NT Username
NT Password
Note: The client is not permitted to use method (1) for authentication
if the salt it received from the server is 0
001: User asks to enter room
Size:
1 Enter/Exit?
0: User wishes to exit room
1: User wishes to enter room
NT Room Name (Used when entering rooms)
NT Password (Empty if password not used)
002: Create a new Room
Size:
1 Room Type
0: Normal room (has sub rooms)
1: Game room (no sub rooms)
NT Room Title
NT Room Description
NT Room Password (blank if no password)
003: Requests Room Info
Size:
NT Room Name
Server SMOnline packets:
000: Login Response
1 Approval Status
0: Approved
1: Approval Failed
NT Login response (plain text)
001: Room Update (Changing rooms)
Size:
1 Type of update
0: Change Room Title
1: Update List of other rooms (or games)
If Room Title Update:
NT Room Title
NT Room Description
1 Type of room:
0: Chat room
1: Game room
1 Allows creation of sub room.
0: Does not allow creation of subrooms
1: Allows creation of subrooms
If Room List Update:
1 Number of rooms
NT Room1 Title
NT Room1 Description
NT Room2 Title
NT Room2 Description
...
NT RoomN Title
NT RoomN Description
Room Status appended for reverse compatibility
1 Room1 Status
0: Normal Room
1: Unused
2: Room in game
3: First stage of song selection has been done
4: Second stage of song selection has been done
1 Room2 Status
...
1 RoomN Status
Room Flags appended for reverse compatibility
1 Room1 Flags
bit 0: Passworded if true
1 Room2 Status
...
1 RoomN Status
002: Request general information from server.
1 Format for stats
0: Normal unformatted stats
003: Room Info
Size:
NT Last Song Title
NT Last Song Subtitle
NT Last Song Artist
1 Num Players
1 Max Players
NT Player1 Name
...
NT PlayerN Name
+5
View File
@@ -0,0 +1,5 @@
<html>
<body>
This is a dummy file, installed by the StepMania installer; it will be overwitten the first time machine stats are saved.
</body>
</html>
+23
View File
@@ -0,0 +1,23 @@
* Option - Exclude autogen
* DWI Course Compatibility
- Shuffle
- Random Entry
Low Pri:
* Keypad mapping - Auto-advance
* PSX compatibility option. WHen enabled:
- up-right should be synonymous with start.
- other things that PSX DDR games do to be more pad-friendly
? Option system reengineering
- dynamically create option menus based on categorized options.
- provide properties to options for later use in network SM
? Input mapping reengineering
- Chording
Niggling:
- VSync option mentions tearing.
- Ignore axes - add warning that having this on can cause input problems.
+14
View File
@@ -0,0 +1,14 @@
*** ***
*** TODO file for Eric Gustafson ***
*** ***
Docs
----------
1. Fill in sections for already written manual parts
2. Fill in section for editor
3. Fill in section for compile/cvs instructions
4. Fill in section for smpackage
SMConvert
----------
1. EVERYTHING!
+7
View File
@@ -0,0 +1,7 @@
Work on ez2 metrics
Work on para metrics
Work on official Stepmania 5th mix theme
Improve Other Themes
Maybe work on a course editor?
+21
View File
@@ -0,0 +1,21 @@
////////////////////////////////////
//Lance Gilbert's Todo/Done Record//
////////////////////////////////////
// Last Updated November 12th 2002
Todo List:
1) Fix menus that go off the right hand side of the screen.
STATUS: In Progress (As Of 11/12/02)
2) Fix OpenGL/SDL based refresh rate changes.
STATUS: In Progress (As Of 11/12/02)
Explination: Made some changes... but they didn't seem to work.
I'm still encountering the 80Hz bug.
3) Fix Movie Loading Problems? (May be my machine, I'm looking into it)
STATUS: Un-Resolved (As Of 11/12/02)
+17
View File
@@ -0,0 +1,17 @@
TODO (last updated 11/12/03)
(Note 1: anyone who wants to dump stuff off on me, add it to the bottom of the list and put your initials at the beginning - I'll take a look at doing it)
(Note 2: if you've done something that's in my list, mark it off)
(111203 ) Finish NOTE noteskin
(111203 ) Refix autogen from the *&@$ing idiocy in the rewrite
( ) Editor -> 3-place pause display
( ) Editor -> Editor.ini
( ) Course loader -> Allow random mods (mod name: RMODS :->)
( ) Courses -> Remove massive bug where arrows are rendered incorrectly and do not disappear
(111203 ) Music wheel -> why the hell is the autogen logo appearing in Pop N' Music on pnm-nine steps
(-------) --- anything below this line waits until release of 4.0 ---
( ) Song ID system
( ) ScreenInformation
( ) ScreenRecords
( ) Workout mode
( ) 4thCS Challenge mode
+11
View File
@@ -0,0 +1,11 @@
////////////////////////////////////
// Miryokuteki's Todo/Done Record //
////////////////////////////////////
// Last Updated July 7th, 2003
Todo List:
<cleared>
Done as of 05/09/03:
<cleared>
+32
View File
@@ -0,0 +1,32 @@
These are things I want to see get done, and may or may not get around to.
BUGS:
* During-gameplay judgement display (perfect, great, etc.) isn't updating
correctly. The animations are correct, but it's not using the right
graphics, instead cycling seemingly randomly between Marvellous and
Perfect.
* In the music select, the groove radar is stuck at max everything.
* In jukebox mode, scores aren't reset between songs. This means the score
meter goes insanely high and eventually (if allowed to go on for long
enough) an assert fails due to an integer overflow.
* Texture/etc loading can't handle redirects that start with the file name of
the file they refer to (e.g. "Foo Bar.redir" referring to "Foo"); it instead
just goes into an infinite loop repeatedly resolving to the redirect.
Other:
* We need redirects for the note color NoteSkin elements, e.g. Tap Note 12th,
etc. I've added some to the common fallbacks, but dance could use some too.
* Redesign ScreenSelectMusic to make the layout much much more freeform. We
could have all our music selection needs in one program just by setting up
banner and/or custom graphic as a WheelItem element and allowing more
customization of the wheel "path". That should be sufficient for everything
I can think of except for style changes in 2nd generation PiU song wheel.
* Allow themes to specify left/right vs. up/down item selection controls on a
per-screen basis. The best way to do this would be to separate
MenuLeft / MenuRight from PrevItem / NextItem and mapping the latter two
appropriately inside ScreenSelect.
+4
View File
@@ -0,0 +1,4 @@
- Rewrite row timings to allow for separate judgments of notes in a row, thereby
allowing for BM/PNM-like row judgment and combo-counting.
- Implement BMA inflating and simfile format specifications.
+17
View File
@@ -0,0 +1,17 @@
---------------------------------------------------------------------
TODO for Tim Hentenaar
* = todo
^ = done
---------------------------------------------------------------------
As of: 2/18/2003
* Add RageSoundDriver for Linux to the drivers list
* Make a makefile for Linux if there isn't one
* Do some testing...
^ checked in RageSound Driver for Linux (ALSA)
^ modified arch.cpp & arch.h to include Linux Sound Driver
+7
View File
@@ -0,0 +1,7 @@
1/25/06
Wow; over 2 years since I updated this...
Goals: Find bugs, squash them, get VC2005 compiled.
Pray for me.
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 77 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 73 B