ManiaScript conventions
File
- ManiaScript files MUST use LF line ending.
- ManiaScript files MUST use UTF-8 encoding without BOM.
- ManiaScript files names MUST use PascalCase.
- ManiaScript files format MUST be
.Script.txt
Settings
- Settings names should be prefixed by
S_
- ALL settings should use PascalCase.
Constants
- Constants names should be prefixed by
C_
- ALL constants should use PascalCase.
Variables
- Globals variables names should be prefixed by
G_
- ALL variables should use PascalCase.
- Variables declared
for
something should be prefixed to avoid name collision.
netwrite
and netread
variables should be prefixed by Net_
persistent
variables should be prefixed by Persistent_
or P_
Functions
- Functions argument should start with an underscore (_) and start with upper case to avoid name collision.
- Opening braces for functions should go on the same line, and closing braces should go on the next line after the body.
- Private function should be prefixed by
Private_
Control structures
Control structures are: if, else if, else, switch, while, foreach, for.
- There should be one space after the control structure keyword.
- There shouldn't be a space after the opening parenthesis.
- There shouldn't be a space before the closing parenthesis.
- There should be one space between the closing parenthesis and the opening brace.
- The structure body should be indented once.
- The closing brace should be on the next line after the body.
Example, file LibFoo.Script.txt
#Const C_ConstantVariable 456
declare Integer G_GlobalVariable;
Void Private_DoNothing() {
}
Text DoSomething(Integer _Id) {
declare Text Result;
if (_Id == 42) {
Private_DoNothing();
Result = "42";
} else {
Result = "";
}
foreach (Player in Players) {
declare Text LibFoo_VariableForSomething for Player;
LibFoo_VariableForSomething = "42";
declare netwrite Integer Net_LibFoo_Variable for Player;
Net_LibFoo_Variable = 42;
}
return Result;
}