smsvn -> ssc-hg glue: rearrange directory structure
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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 -=-
|
||||
@@ -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]
|
||||
@@ -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.
|
||||
@@ -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
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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.
|
||||
@@ -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!
|
||||
@@ -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?
|
||||
@@ -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)
|
||||
@@ -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
|
||||
@@ -0,0 +1,11 @@
|
||||
////////////////////////////////////
|
||||
// Miryokuteki's Todo/Done Record //
|
||||
////////////////////////////////////
|
||||
|
||||
// Last Updated July 7th, 2003
|
||||
|
||||
Todo List:
|
||||
<cleared>
|
||||
|
||||
Done as of 05/09/03:
|
||||
<cleared>
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 77 B |
Binary file not shown.
|
After Width: | Height: | Size: 73 B |
Reference in New Issue
Block a user