Compare commits
359 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4ba3ec1a9d | ||
![]() |
378721ea1e | ||
![]() |
a79600f302 | ||
![]() |
868950f721 | ||
![]() |
9cd6c781da | ||
![]() |
30de4d82cb | ||
![]() |
38b8dae7c7 | ||
![]() |
0aaf2c221f | ||
![]() |
c71337c3f9 | ||
![]() |
2ff89dc967 | ||
![]() |
7f26b3f7a4 | ||
![]() |
b063f560cc | ||
![]() |
e5989571ee | ||
![]() |
efa64b6505 | ||
![]() |
ee303a5f7a | ||
![]() |
330bd24c02 | ||
![]() |
b2033eb3fd | ||
![]() |
ee33dc6768 | ||
![]() |
e7bb56f203 | ||
![]() |
2b02bcc3c8 | ||
![]() |
232f98511d | ||
![]() |
abdfd08806 | ||
![]() |
293c008eed | ||
![]() |
615d1d72f9 | ||
![]() |
55165519d2 | ||
![]() |
5cd8c56ee2 | ||
![]() |
0d1521f791 | ||
![]() |
6bf8a89612 | ||
![]() |
a7da97ba4d | ||
![]() |
55b42ddee6 | ||
![]() |
cf991818d9 | ||
![]() |
592b202218 | ||
![]() |
ef616baca3 | ||
![]() |
3be2561ceb | ||
![]() |
ff170070ce | ||
![]() |
2379aa086c | ||
![]() |
9984802a9d | ||
![]() |
973665cd33 | ||
![]() |
2124d87107 | ||
![]() |
8d335c571a | ||
![]() |
97b4ae7b1a | ||
![]() |
a707b51c41 | ||
![]() |
c519c26787 | ||
![]() |
bcc4decd3c | ||
![]() |
8310853fd9 | ||
![]() |
e4dd9d1df2 | ||
![]() |
891d055695 | ||
![]() |
227d5daa78 | ||
![]() |
b58db65442 | ||
![]() |
8d8cb27d24 | ||
![]() |
92bc85775c | ||
![]() |
1c32a2501c | ||
![]() |
8a3a26e9c6 | ||
![]() |
7e714da230 | ||
![]() |
388d62031e | ||
![]() |
60a51931a1 | ||
![]() |
40a82c61ea | ||
![]() |
bff5f45976 | ||
![]() |
0f4ca89fa1 | ||
![]() |
66af8c2d6b | ||
![]() |
1cb1befe7a | ||
![]() |
d517536baf | ||
![]() |
ad1d2b51fa | ||
![]() |
46784cee94 | ||
![]() |
0ef3edccfe | ||
![]() |
8fed8e0ef9 | ||
![]() |
502c04abaa | ||
![]() |
0622a69aec | ||
![]() |
f7f8401416 | ||
![]() |
c0b3f9ef56 | ||
![]() |
e999f953b9 | ||
![]() |
8b3c862fee | ||
![]() |
b128446464 | ||
![]() |
21624b2d96 | ||
![]() |
506e3a3226 | ||
![]() |
05624f84c7 | ||
![]() |
de34b562ad | ||
![]() |
d54ae5d44a | ||
![]() |
1c921efa4e | ||
![]() |
3494048e5a | ||
![]() |
26bee9ab19 | ||
![]() |
b5397c8f46 | ||
![]() |
b4201172ae | ||
![]() |
b59f39fec7 | ||
![]() |
d89675d266 | ||
![]() |
1d62312bb6 | ||
![]() |
282b64e5ae | ||
![]() |
2829098fa7 | ||
![]() |
9f6d2f8e32 | ||
![]() |
fb0841c824 | ||
![]() |
80c298d21e | ||
![]() |
0a2655ed14 | ||
![]() |
0873cb2139 | ||
![]() |
2c4bcf69de | ||
![]() |
0178d374c3 | ||
![]() |
8505da8729 | ||
![]() |
c4cb2842f5 | ||
![]() |
76bd2b12b3 | ||
![]() |
5a4a5f2070 | ||
![]() |
50e7a9a97a | ||
![]() |
6c354f4c57 | ||
![]() |
f005a2d4b1 | ||
![]() |
03e3afced9 | ||
![]() |
ac71edf43f | ||
![]() |
d2a706eca6 | ||
![]() |
b7b83c0c44 | ||
![]() |
7898451eca | ||
![]() |
9520fb093d | ||
![]() |
b7e002b3ea | ||
![]() |
bc2cd7f0db | ||
![]() |
e5aa88b71b | ||
![]() |
9dd603fbe4 | ||
![]() |
b479cc0aa1 | ||
![]() |
bbeeba23e3 | ||
![]() |
581f2a49a1 | ||
![]() |
f9bb82d17b | ||
![]() |
a28eef12a6 | ||
![]() |
37aaf660f5 | ||
![]() |
088b478b58 | ||
![]() |
c9544542b2 | ||
![]() |
de1408fbb4 | ||
![]() |
0633e99dc1 | ||
![]() |
c64838009c | ||
![]() |
9f15f25e11 | ||
![]() |
c5e2a24178 | ||
![]() |
3cbcdceb44 | ||
![]() |
e795bce063 | ||
![]() |
dbe77ee331 | ||
![]() |
882069c415 | ||
![]() |
245a6c6ef8 | ||
![]() |
f8717a531e | ||
![]() |
2ad06306de | ||
![]() |
4cf0701670 | ||
![]() |
2d81f045a0 | ||
![]() |
52f7a41a1d | ||
![]() |
6eb53bb0db | ||
![]() |
9dedce2436 | ||
![]() |
6a0c7ea7bd | ||
![]() |
93b7990981 | ||
![]() |
e5be12ed31 | ||
![]() |
6b7dc61857 | ||
![]() |
5ccff94873 | ||
![]() |
1c084c4e3b | ||
![]() |
c2ba3f9574 | ||
![]() |
dfd3906298 | ||
![]() |
5c317da7df | ||
![]() |
25b9a12269 | ||
![]() |
e73c9a3c72 | ||
![]() |
6bb34ee7f4 | ||
![]() |
6d5dbc0793 | ||
![]() |
968c9be82f | ||
![]() |
efd630b18a | ||
![]() |
fc7d0179e7 | ||
![]() |
556b830e35 | ||
![]() |
df147d1451 | ||
![]() |
46d9df4b4d | ||
![]() |
6d2bbea19e | ||
![]() |
a4edeb56cd | ||
![]() |
e8d72c7ef5 | ||
![]() |
41a435c804 | ||
![]() |
68c7c0cc94 | ||
![]() |
175f9a19d7 | ||
![]() |
2a13e03555 | ||
![]() |
4d3fcc12f5 | ||
![]() |
23163829b6 | ||
![]() |
70ef5c66b6 | ||
![]() |
7b2256be88 | ||
![]() |
58d825c86e | ||
![]() |
7704bbb788 | ||
![]() |
9506ffaac8 | ||
![]() |
e66ecbfba6 | ||
![]() |
44bdd26e83 | ||
![]() |
ed912c1e65 | ||
![]() |
46a8090fc2 | ||
![]() |
e19fed0760 | ||
![]() |
d271734aa2 | ||
![]() |
8f2e271639 | ||
![]() |
bb4dd02f90 | ||
![]() |
e0189ea305 | ||
![]() |
6a2f1cc35b | ||
![]() |
a3d1406dd4 | ||
![]() |
7d3ada265c | ||
![]() |
e506fc64dc | ||
![]() |
ceb67ed7a4 | ||
![]() |
6d5e701c3e | ||
![]() |
ecd8528b77 | ||
![]() |
0b02882639 | ||
![]() |
d23651fd8c | ||
![]() |
1b5e90d14b | ||
![]() |
907d584ece | ||
![]() |
10094b1912 | ||
![]() |
f17e07d4aa | ||
![]() |
610995af15 | ||
![]() |
6ff3b2d7ec | ||
![]() |
bdfacae401 | ||
![]() |
7857065c51 | ||
![]() |
85042a408a | ||
![]() |
d1c90b59fb | ||
![]() |
0819a2212c | ||
![]() |
73647d9558 | ||
![]() |
976ab28a11 | ||
![]() |
c43bfca3d4 | ||
![]() |
74d0144af9 | ||
![]() |
890ba762a3 | ||
![]() |
f136230b8e | ||
![]() |
ef3612217b | ||
![]() |
bbd7cd4f0b | ||
![]() |
5ec5d72198 | ||
![]() |
577d9da3c6 | ||
![]() |
5220563b68 | ||
![]() |
33f57a75b0 | ||
![]() |
392eb7d054 | ||
![]() |
7c829f59b0 | ||
![]() |
92d4753248 | ||
![]() |
8f4e66ff01 | ||
![]() |
2b8ce73ae2 | ||
![]() |
8f8acbf891 | ||
![]() |
ed40ce0f8f | ||
![]() |
60be93898f | ||
![]() |
23546219a8 | ||
![]() |
5694a2c343 | ||
![]() |
c3ea7df661 | ||
![]() |
0208d4de39 | ||
![]() |
f1fa61dfbb | ||
![]() |
3870313cfb | ||
![]() |
efabfe6dd8 | ||
![]() |
bda12432d6 | ||
![]() |
6137d24930 | ||
![]() |
29a53bec6c | ||
![]() |
e6ad1beb39 | ||
![]() |
0cf6e8e47a | ||
![]() |
7c4af2b6bb | ||
![]() |
581660a84b | ||
![]() |
9c4ca6a2a1 | ||
![]() |
34c0e41d54 | ||
![]() |
79742f4d26 | ||
![]() |
b09bfe9816 | ||
![]() |
b0e02ca6a6 | ||
![]() |
0d4ea49b55 | ||
![]() |
a0af4086d9 | ||
![]() |
b3ddb009b2 | ||
![]() |
1b87865198 | ||
![]() |
dbe11e35a6 | ||
![]() |
0f278d6a9e | ||
![]() |
deb9634a12 | ||
![]() |
367092a27e | ||
![]() |
b32db58d11 | ||
![]() |
bb20528977 | ||
![]() |
e9bfc1f55c | ||
![]() |
9b65830d05 | ||
![]() |
f178a65867 | ||
![]() |
181bdf92b2 | ||
![]() |
084a5000e1 | ||
![]() |
b91374dc1a | ||
![]() |
ed0c4660f5 | ||
![]() |
09de2c989f | ||
![]() |
2be6ccc331 | ||
![]() |
ad5d7d2ea3 | ||
![]() |
16d4276184 | ||
![]() |
01021d0ee3 | ||
![]() |
9fc8f7e142 | ||
![]() |
b7f9fe1db0 | ||
![]() |
413497d138 | ||
![]() |
2e6f58cf33 | ||
![]() |
99d3b6ad39 | ||
![]() |
36210ad4ee | ||
![]() |
2062efff00 | ||
![]() |
789bed9c95 | ||
![]() |
b797ce7973 | ||
![]() |
2c08f8cd74 | ||
![]() |
037d62e013 | ||
![]() |
970a9a85ec | ||
![]() |
2fe492c463 | ||
![]() |
3f7c74dbf8 | ||
![]() |
af56bfc5ae | ||
![]() |
d266635116 | ||
![]() |
23c9e44a58 | ||
![]() |
131d1fe224 | ||
![]() |
11030317b7 | ||
![]() |
aa5967ddbd | ||
![]() |
3206263c53 | ||
![]() |
788b965000 | ||
![]() |
ef5665a66f | ||
![]() |
c32e5d7e49 | ||
![]() |
9bf977499a | ||
![]() |
288fd2634a | ||
![]() |
7847bc3d01 | ||
![]() |
3c44398e4b | ||
![]() |
2ab3cb8d05 | ||
![]() |
e5c8908f8b | ||
![]() |
ab1793626b | ||
![]() |
2b6a51d052 | ||
![]() |
20992044d1 | ||
![]() |
a3f227025b | ||
![]() |
a14694e5eb | ||
![]() |
537fad69e2 | ||
![]() |
ca81d61579 | ||
![]() |
8a49b88006 | ||
![]() |
e6427fe729 | ||
![]() |
85ba705d9c | ||
![]() |
a90610ce57 | ||
![]() |
f11dd10109 | ||
![]() |
962cc6c1ca | ||
![]() |
cc019b4545 | ||
![]() |
5f6f7fdb8d | ||
![]() |
1fc985bec1 | ||
![]() |
77517fb623 | ||
![]() |
6de031c4cf | ||
![]() |
9582d79ee0 | ||
![]() |
93de1b8300 | ||
![]() |
c9509f6264 | ||
![]() |
7c79ae1634 | ||
![]() |
0f868448a2 | ||
![]() |
39236ee000 | ||
![]() |
070e85deaa | ||
![]() |
339b0ba327 | ||
![]() |
e5b8a5f65f | ||
![]() |
c7fe0575c4 | ||
![]() |
77ba59143b | ||
![]() |
fc46940449 | ||
![]() |
0d0874fb5d | ||
![]() |
fdfb8ab52c | ||
![]() |
7eb4c26c53 | ||
![]() |
1236bbac25 | ||
![]() |
300b9bf3e4 | ||
![]() |
63c21f7877 | ||
![]() |
4761d581f2 | ||
![]() |
c14b45c31e | ||
![]() |
ae9e129f03 | ||
![]() |
e330c4499f | ||
![]() |
fb4c265fea | ||
![]() |
4e32cc3775 | ||
![]() |
da8636af5a | ||
![]() |
0d5d555b91 | ||
![]() |
5749073d55 | ||
![]() |
fb25ae6295 | ||
![]() |
ac8258b3f8 | ||
![]() |
b476c97e21 | ||
![]() |
c17112009a | ||
![]() |
c82e9810ad | ||
![]() |
b26d29e86f | ||
![]() |
cef5285f85 | ||
![]() |
f6216da3ed | ||
![]() |
4d8f53f3b1 | ||
![]() |
a5408d21fd | ||
![]() |
62c14d2ba9 | ||
![]() |
6f5fc77570 | ||
![]() |
3372812e2e | ||
![]() |
ef9f2e7a52 | ||
![]() |
cbeed0b414 | ||
![]() |
4136adefab | ||
![]() |
8cdbb4a166 | ||
![]() |
442d6e3efe | ||
![]() |
046d994104 | ||
![]() |
94b67abda7 | ||
![]() |
15ee1db908 | ||
![]() |
ef80be1ded | ||
![]() |
a3e56eea49 | ||
![]() |
1b634032a7 |
22
.eslintrc
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"globals": {
|
||||
"angular": false,
|
||||
"require": false,
|
||||
"console": false,
|
||||
"gd" : true,
|
||||
"module" : true,
|
||||
"process": false,
|
||||
"describe": false,
|
||||
"it": false,
|
||||
"after": false,
|
||||
"gdjs": true
|
||||
},
|
||||
"rules": {
|
||||
"quotes": 0,
|
||||
"global-strict": 0,
|
||||
"no-console": 0,
|
||||
"curly": 0,
|
||||
"no-redeclare": 0,
|
||||
"no-underscore-dangle": 0
|
||||
}
|
||||
}
|
25
.gitignore
vendored
@@ -6,6 +6,7 @@
|
||||
/ExtLibs/boost
|
||||
/ExtLibs/SFML
|
||||
/ExtLibs/wxwidgets
|
||||
/ExtLibs/wxWidgets
|
||||
/ExtLibs/*.7z
|
||||
/scripts/Repository keys
|
||||
/scripts/logs/*.txt
|
||||
@@ -15,11 +16,20 @@
|
||||
/Binaries/.build-test
|
||||
/Binaries/.embuild
|
||||
/Binaries/.embuild-debug
|
||||
/Binaries/build
|
||||
/Binaries/build-debug
|
||||
/Binaries/build-dev
|
||||
/Binaries/build-tests
|
||||
/Binaries/embuild
|
||||
/Binaries/embuild-debug
|
||||
/Binaries/Releases/*.exe
|
||||
/Binaries/Releases/*.7z
|
||||
/Binaries/Releases/*.tar.bz2
|
||||
/Binaries/Releases/*.tar.lzma
|
||||
/Binaries/Releases/*.zip
|
||||
/Binaries/Releases/**/*.7z
|
||||
/Binaries/Releases/**/*.tar.bz2
|
||||
/Binaries/Releases/**/*.tar.lzma
|
||||
/Binaries/Releases/**/*.zip
|
||||
/Binaries/Releases/**/*.deb
|
||||
Binaries/Packaging/debian-package/opt/
|
||||
Binaries/Packaging/debian-package/debian
|
||||
/WebIDE
|
||||
*.depend
|
||||
*.layout
|
||||
@@ -34,6 +44,11 @@
|
||||
*.a
|
||||
*.so
|
||||
*.bc
|
||||
*.debhelper.log
|
||||
/Binaries/Output/Debug_Linux/**
|
||||
/Binaries/Output/Release_Linux/**
|
||||
!/Binaries/Output/Release_Linux/StartGDevelop.sh
|
||||
!/Binaries/Output/Release_Linux/CppPlatform/
|
||||
/Binaries/**/MinGW32
|
||||
/Binaries/**/CppPlatform/Runtime
|
||||
/Binaries/**/CppPlatform/include
|
||||
@@ -46,3 +61,5 @@
|
||||
/Binaries/Output/WebIDE/Debug
|
||||
/Binaries/Output/WebIDE/libGD.raw.js
|
||||
/WebIDE
|
||||
!/GDCpp/scripts/bcp.exe
|
||||
/GDJS/tests/node_modules
|
||||
|
37
.travis.yml
Normal file
@@ -0,0 +1,37 @@
|
||||
language: cpp
|
||||
compiler:
|
||||
- gcc
|
||||
- clang
|
||||
|
||||
install:
|
||||
- sudo apt-get update
|
||||
#Download and compile dependencies
|
||||
- cd ExtLibs
|
||||
- sudo apt-get install p7zip-full
|
||||
#SFML
|
||||
- sudo apt-get install libopenal-dev libjpeg-dev libglew-dev libudev-dev libxrandr-dev libsndfile1-dev libglu1-mesa-dev libfreetype6-dev
|
||||
- wget http://www.compilgames.net/code/GameDevelopSDK/SFML.7z
|
||||
- 7za x SFML.7z > /dev/null
|
||||
- cd SFML
|
||||
- mkdir build-linux
|
||||
- cd build-linux
|
||||
- cmake ..
|
||||
- make
|
||||
- sudo make install
|
||||
- cd ..
|
||||
- cd ..
|
||||
#Boost
|
||||
- wget http://www.compilgames.net/code/GameDevelopSDK/boost_1_55_0.7z
|
||||
- 7za x boost_1_55_0.7z > /dev/null
|
||||
- mv boost_1_55_0 boost
|
||||
- cd ..
|
||||
#Compile the tests only
|
||||
- mkdir .build-tests
|
||||
- cd .build-tests
|
||||
- cmake -DBUILD_GDJS=FALSE -DBUILD_IDE=FALSE -DBUILD_EXTENSIONS=FALSE -DBUILD_TESTS=TRUE -DNO_GUI=TRUE ..
|
||||
- make
|
||||
- cd ..
|
||||
script:
|
||||
- cd .build-tests
|
||||
- Core/GDCore_tests
|
||||
- GDCpp/GDCpp_tests
|
7
Binaries/Output/Release_Linux/CppPlatform/Runtime/PlayLinux
Executable file
@@ -0,0 +1,7 @@
|
||||
#Execute this file to launch the game
|
||||
#If you can not launch it, make sure that this file
|
||||
#as well as 'ExeLinux' have the right to be executed
|
||||
#(Right click on file > Properties)
|
||||
|
||||
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
|
||||
./ExeLinux
|
20
Binaries/Output/Release_Linux/StartGDevelop.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#Execute this file to launch GDevelop
|
||||
#If you can not launch GD, make sure that this file
|
||||
#as well as 'GDIDE' have the right to be executed
|
||||
#(Right click on file > Properties)
|
||||
|
||||
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
|
||||
./GDIDE
|
||||
if [ "$?" = "127" ]; then
|
||||
mkdir -p ~/.GDevelop
|
||||
./GDIDE 1> ~/.GDevelop/errorMsgWhileLoadingGD.txt 2> ~/.GDevelop/errorMsgWhileLoadingGD.txt
|
||||
errorMsg=$(cat < ~/.GDevelop/errorMsgWhileLoadingGD.txt)
|
||||
|
||||
echo "$errorMsg" | grep "loading shared"
|
||||
if [ "$?" == "0" ]; then
|
||||
zenity --error --text="Unable to launch GDevelop! Here is the error message:\n\n <b>$errorMsg</b>\n\nMay be a <b>package is not installed</b>.\nCheck if you can find the package in the Software Center.";
|
||||
else
|
||||
zenity --error --text="Unable to launch GDevelop, a unknown error happened! Here is the full error message:\n\n <b>$errorMsg</b>\n\n.";
|
||||
fi;
|
||||
fi;
|
||||
|
After Width: | Height: | Size: 450 B |
After Width: | Height: | Size: 346 B |
BIN
Binaries/Output/Release_Windows/Examples/BarSelector.png
Normal file
After Width: | Height: | Size: 336 B |
@@ -0,0 +1,765 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<project firstLayout="">
|
||||
<gdVersion build="73" major="3" minor="4" revision="0" />
|
||||
<properties linuxExecutableFilename="" macExecutableFilename="" useExternalSourceFiles="false" winExecutableFilename="" winExecutableIconFile="">
|
||||
<name>Basic Level Editor with Tile Map Object</name>
|
||||
<author></author>
|
||||
<windowWidth>800</windowWidth>
|
||||
<windowHeight>600</windowHeight>
|
||||
<latestCompilationDirectory></latestCompilationDirectory>
|
||||
<maxFPS>60</maxFPS>
|
||||
<minFPS>10</minFPS>
|
||||
<verticalSync>false</verticalSync>
|
||||
<extensions>
|
||||
<extension name="BuiltinObject" />
|
||||
<extension name="BuiltinAudio" />
|
||||
<extension name="BuiltinVariables" />
|
||||
<extension name="BuiltinTime" />
|
||||
<extension name="BuiltinMouse" />
|
||||
<extension name="BuiltinKeyboard" />
|
||||
<extension name="BuiltinJoystick" />
|
||||
<extension name="BuiltinCamera" />
|
||||
<extension name="BuiltinWindow" />
|
||||
<extension name="BuiltinFile" />
|
||||
<extension name="BuiltinNetwork" />
|
||||
<extension name="BuiltinScene" />
|
||||
<extension name="BuiltinAdvanced" />
|
||||
<extension name="Sprite" />
|
||||
<extension name="BuiltinCommonInstructions" />
|
||||
<extension name="BuiltinCommonConversions" />
|
||||
<extension name="BuiltinStringInstructions" />
|
||||
<extension name="BuiltinMathematicalTools" />
|
||||
<extension name="BuiltinExternalLayouts" />
|
||||
<extension name="TileMapObject" />
|
||||
<extension name="TextObject" />
|
||||
</extensions>
|
||||
<platforms>
|
||||
<platform name="Game Develop C++ platform" />
|
||||
</platforms>
|
||||
<currentPlatform>Game Develop C++ platform</currentPlatform>
|
||||
</properties>
|
||||
<resources>
|
||||
<resources>
|
||||
<resource alwaysLoaded="false" file="tiles_spritesheet.png" kind="image" name="tiles_spritesheet.png" smoothed="true" userAdded="true" />
|
||||
<resource alwaysLoaded="false" file="../../../../n.png" kind="image" name="n.png" smoothed="true" userAdded="true" />
|
||||
</resources>
|
||||
<resourceFolders />
|
||||
</resources>
|
||||
<objects />
|
||||
<objectsGroups />
|
||||
<variables />
|
||||
<layouts>
|
||||
<layout b="209" disableInputWhenNotFocused="true" mangledName="Nouvelle_32sc__4524ne" name="Nouvelle sc<73>ne" oglFOV="90.000000" oglZFar="500.000000" oglZNear="1.000000" r="209" standardSortMethod="true" stopSoundsOnStartup="true" title="" v="209">
|
||||
<uiSettings associatedLayout="" grid="false" gridB="255" gridG="180" gridHeight="32" gridR="158" gridWidth="32" snap="true" windowMask="false" zoomFactor="1.000000" />
|
||||
<objectsGroups />
|
||||
<variables />
|
||||
<instances>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Level" width="0.000000" x="100.000000" y="-100.000000" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Help" width="0.000000" x="314.500031" y="528.500000" zOrder="2">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="CurrentTileLabel" width="0.000000" x="6.500029" y="6.500008" zOrder="3">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="CurrentTileIndicator" width="0.000000" x="9.500000" y="64.500000" zOrder="4">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
</instances>
|
||||
<objects>
|
||||
<object name="Level" type="TileMapObject::TileMap">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<tileSet textureName="tiles_spritesheet.png" tileSizeX="70.000000" tileSizeY="70.000000" tileSpacingX="2.000000" tileSpacingY="2.000000">
|
||||
<hitboxes>
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;35|0;35" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;35|0;35" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;35|0;35" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;35|0;35" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;35|70;35|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
</hitboxes>
|
||||
</tileSet>
|
||||
<tileMap columns="10" rows="10">
|
||||
<tiles>-1,-1,-1,-1,-1,-1,-1,-1,103,152|-1,-1,-1,68,-1,-1,-1,-1,103,152|-1,-1,-1,44,-1,-1,-1,-1,103,152|-1,-1,-1,-1,80,-1,-1,-1,103,152|-1,-1,0,-1,-1,80,-1,-1,103,152|-1,-1,-1,-1,-1,-1,68,-1,103,152|-1,-1,-1,-1,-1,-1,56,-1,103,152|-1,-1,-1,-1,-1,-1,44,-1,103,152|-1,-1,-1,-1,-1,-1,-1,-1,103,152|-1,-1,-1,-1,-1,-1,-1,-1,103,152#-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1#-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1|-1,-1,-1,-1,-1,-1,-1,-1,-1,-1</tiles>
|
||||
</tileMap>
|
||||
</object>
|
||||
<object bold="false" italic="false" name="Help" smoothed="true" type="TextObject::Text" underlined="false">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<string>Left clic to add the tile, right clic to delete it.
Use 0-5 to select a tile to add (not from the numpad)
S to save the level, L to reload it.</string>
|
||||
<font></font>
|
||||
<characterSize>20</characterSize>
|
||||
<color b="0" g="0" r="0" />
|
||||
</object>
|
||||
<object bold="false" italic="false" name="CurrentTileLabel" smoothed="true" type="TextObject::Text" underlined="false">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<string>Current
Tile :</string>
|
||||
<font></font>
|
||||
<characterSize>20</characterSize>
|
||||
<color b="0" g="0" r="0" />
|
||||
</object>
|
||||
<object name="CurrentTileIndicator" type="TileMapObject::TileMap">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<tileSet textureName="tiles_spritesheet.png" tileSizeX="70.000000" tileSizeY="70.000000" tileSpacingX="2.000000" tileSpacingY="2.000000">
|
||||
<hitboxes>
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
<tileHitbox collidable="true" polygon="0;0|70;0|70;70|0;70" />
|
||||
</hitboxes>
|
||||
</tileSet>
|
||||
<tileMap columns="1" rows="1">
|
||||
<tiles>0#-1#-1</tiles>
|
||||
</tileMap>
|
||||
</object>
|
||||
</objects>
|
||||
<events>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="DepartScene" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarScene" />
|
||||
<parameters>
|
||||
<parameter>current_tile</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>103</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="109" g="230" r="255" textB="0" textG="0" textR="0" />
|
||||
<comment>Met <20> jour l'indicateur de tuile (qui montre la tuile que l'on souhaite ins<6E>rer)</comment>
|
||||
<comment2>Update the tile indicator (which shows the tile that will be inserted)</comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions />
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TileMapObject::SetTile" />
|
||||
<parameters>
|
||||
<parameter>CurrentTileIndicator</parameter>
|
||||
<parameter>0</parameter>
|
||||
<parameter>0</parameter>
|
||||
<parameter>0</parameter>
|
||||
<parameter>Variable(current_tile)</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="109" g="230" r="255" textB="0" textG="0" textR="0" />
|
||||
<comment>Ajoute la tuile dans l'objet.
Les expressions GetColumnAt et GetRowAt permettent de trouver la colonne et la ligne en fonction de la position (ici la position de la souris)</comment>
|
||||
<comment2>Add the tile in the object.
GetColumnAt and GetRowAt expressions allow us to get the column and the row from the position (in that case, the mouse position)</comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="SourisBouton" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>Left</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<condition>
|
||||
<type inverted="false" value="BuiltinCommonInstructions::Once" />
|
||||
<parameters />
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TileMapObject::SetTile" />
|
||||
<parameters>
|
||||
<parameter>Level</parameter>
|
||||
<parameter>0</parameter>
|
||||
<parameter>Level.GetColumnAt(MouseX())</parameter>
|
||||
<parameter>Level.GetRowAt(MouseY())</parameter>
|
||||
<parameter>Variable(current_tile)</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="109" g="230" r="255" textB="0" textG="0" textR="0" />
|
||||
<comment>Supprime la tuile
Similaire <20> l'<3B>v<EFBFBD>nement pr<70>c<EFBFBD>dent mais on met la tuile #-1 (cela permet de supprimer la tuile)</comment>
|
||||
<comment2>Remove the tile.
Similar to the previous event but we set the tile #-1 to remove the tile.</comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="SourisBouton" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>Right</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<condition>
|
||||
<type inverted="false" value="BuiltinCommonInstructions::Once" />
|
||||
<parameters />
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TileMapObject::SetTile" />
|
||||
<parameters>
|
||||
<parameter>Level</parameter>
|
||||
<parameter>0</parameter>
|
||||
<parameter>Level.GetColumnAt(MouseX())</parameter>
|
||||
<parameter>Level.GetRowAt(MouseY())</parameter>
|
||||
<parameter>-1</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="109" g="230" r="255" textB="0" textG="0" textR="0" />
|
||||
<comment>Ev<45>nements pour changer la tuile <20> ins<6E>rer</comment>
|
||||
<comment2>Events to change the tile to insert</comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="KeyPressed" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>Num1</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarScene" />
|
||||
<parameters>
|
||||
<parameter>current_tile</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>103</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="KeyPressed" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>Num2</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarScene" />
|
||||
<parameters>
|
||||
<parameter>current_tile</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>152</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="KeyPressed" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>Num3</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarScene" />
|
||||
<parameters>
|
||||
<parameter>current_tile</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>80</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="KeyPressed" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>Num4</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarScene" />
|
||||
<parameters>
|
||||
<parameter>current_tile</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>0</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="KeyPressed" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>Num5</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarScene" />
|
||||
<parameters>
|
||||
<parameter>current_tile</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>132</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="109" g="230" r="255" textB="0" textG="0" textR="0" />
|
||||
<comment>Sauvegarder et charger un niveau (il est juste sauvegard<72> dans une variable, pas dans un fichier)</comment>
|
||||
<comment2>Save and load a level (just saved in a variable, not in a file)</comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="KeyPressed" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>s</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<condition>
|
||||
<type inverted="false" value="BuiltinCommonInstructions::Once" />
|
||||
<parameters />
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarSceneTxt" />
|
||||
<parameters>
|
||||
<parameter>save</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>Level.SaveTiles()</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="KeyPressed" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>l</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<condition>
|
||||
<type inverted="false" value="BuiltinCommonInstructions::Once" />
|
||||
<parameters />
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TileMapObject::LoadTiles" />
|
||||
<parameters>
|
||||
<parameter>Level</parameter>
|
||||
<parameter>VariableString(save)</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
</events>
|
||||
<layers>
|
||||
<layer name="" visibility="true">
|
||||
<cameras>
|
||||
<camera defaultSize="true" defaultViewport="true" height="0.000000" viewportBottom="1.000000" viewportLeft="0.000000" viewportRight="1.000000" viewportTop="0.000000" width="0.000000" />
|
||||
</cameras>
|
||||
</layer>
|
||||
</layers>
|
||||
<automatismsSharedData />
|
||||
</layout>
|
||||
</layouts>
|
||||
<externalEvents />
|
||||
<externalLayouts />
|
||||
<externalSourceFiles />
|
||||
</project>
|
@@ -62,7 +62,7 @@
|
||||
<Resource kind="image" name="Left.png" alwaysLoaded="false" smoothed="true" userAdded="false" file="Left.png" />
|
||||
<Resource kind="image" name="Right.png" alwaysLoaded="false" smoothed="true" userAdded="false" file="Right.png" />
|
||||
<Resource kind="image" name="ladder_mid.png" alwaysLoaded="false" smoothed="true" userAdded="true" file="ladder_mid.png" />
|
||||
<Resource kind="image" name="grass.png" alwaysLoaded="false" smoothed="true" userAdded="true" file="grass.png" />
|
||||
<Resource kind="image" name="Grass.png" alwaysLoaded="false" smoothed="true" userAdded="true" file="Grass.png" />
|
||||
</Resources>
|
||||
<ResourceFolders />
|
||||
</Resources>
|
||||
@@ -159,7 +159,7 @@
|
||||
<Animation typeNormal="false">
|
||||
<Direction boucle="false" tempsEntre="1.000000">
|
||||
<Sprites>
|
||||
<Sprite image="grass.png">
|
||||
<Sprite image="Grass.png">
|
||||
<Points />
|
||||
<PointOrigine nom="origine" X="0.000000" Y="0.000000" />
|
||||
<PointCentre nom="centre" X="35.000000" Y="35.000000" automatic="true" />
|
||||
|
@@ -0,0 +1,186 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<project firstLayout="">
|
||||
<gdVersion build="75" major="3" minor="5" revision="0" />
|
||||
<properties linuxExecutableFilename="" macExecutableFilename="" useExternalSourceFiles="false" winExecutableFilename="" winExecutableIconFile="">
|
||||
<name>Project</name>
|
||||
<author></author>
|
||||
<windowWidth>800</windowWidth>
|
||||
<windowHeight>600</windowHeight>
|
||||
<latestCompilationDirectory></latestCompilationDirectory>
|
||||
<maxFPS>60</maxFPS>
|
||||
<minFPS>10</minFPS>
|
||||
<verticalSync>false</verticalSync>
|
||||
<extensions>
|
||||
<extension name="BuiltinObject" />
|
||||
<extension name="BuiltinAudio" />
|
||||
<extension name="BuiltinVariables" />
|
||||
<extension name="BuiltinTime" />
|
||||
<extension name="BuiltinMouse" />
|
||||
<extension name="BuiltinKeyboard" />
|
||||
<extension name="BuiltinJoystick" />
|
||||
<extension name="BuiltinCamera" />
|
||||
<extension name="BuiltinWindow" />
|
||||
<extension name="BuiltinFile" />
|
||||
<extension name="BuiltinNetwork" />
|
||||
<extension name="BuiltinScene" />
|
||||
<extension name="BuiltinAdvanced" />
|
||||
<extension name="Sprite" />
|
||||
<extension name="BuiltinCommonInstructions" />
|
||||
<extension name="BuiltinCommonConversions" />
|
||||
<extension name="BuiltinStringInstructions" />
|
||||
<extension name="BuiltinMathematicalTools" />
|
||||
<extension name="BuiltinExternalLayouts" />
|
||||
</extensions>
|
||||
<platforms>
|
||||
<platform name="GDevelop JS platform" />
|
||||
</platforms>
|
||||
<currentPlatform>GDevelop JS platform</currentPlatform>
|
||||
</properties>
|
||||
<resources>
|
||||
<resources>
|
||||
<resource alwaysLoaded="false" file="Pea-Standard.png" kind="image" name="Pea-Standard.png" smoothed="true" userAdded="true" />
|
||||
</resources>
|
||||
<resourceFolders />
|
||||
</resources>
|
||||
<objects />
|
||||
<objectsGroups />
|
||||
<variables />
|
||||
<layouts>
|
||||
<layout b="209" disableInputWhenNotFocused="true" mangledName="New_32scene" name="New scene" oglFOV="90.000000" oglZFar="500.000000" oglZNear="1.000000" r="209" standardSortMethod="true" stopSoundsOnStartup="true" title="" v="209">
|
||||
<uiSettings associatedLayout="" grid="false" gridB="255" gridG="180" gridHeight="32" gridOffsetX="0" gridOffsetY="0" gridR="158" gridWidth="32" snap="true" windowMask="false" zoomFactor="1.000000" />
|
||||
<objectsGroups />
|
||||
<variables />
|
||||
<instances>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="411.999969" y="203.500031" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="90.000000" y="97.500015" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="468.000000" y="303.500000" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="572.000000" y="97.500015" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="147.000000" y="300.500031" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="315.000000" y="140.500031" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="200.999985" y="205.500031" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="417.000031" y="65.500015" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
</instances>
|
||||
<objects>
|
||||
<object name="Pea" type="Sprite">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<animations>
|
||||
<animation useMultipleDirections="false">
|
||||
<directions>
|
||||
<direction looping="false" timeBetweenFrames="1.000000">
|
||||
<sprites>
|
||||
<sprite hasCustomCollisionMask="false" image="Pea-Standard.png">
|
||||
<points />
|
||||
<originPoint name="origine" x="0.000000" y="0.000000" />
|
||||
<centerPoint automatic="true" name="centre" x="18.500000" y="18.500000" />
|
||||
<customCollisionMask>
|
||||
<polygon>
|
||||
<vertice x="0.000000" y="0.000000" />
|
||||
<vertice x="37.000000" y="0.000000" />
|
||||
<vertice x="37.000000" y="37.000000" />
|
||||
<vertice x="0.000000" y="37.000000" />
|
||||
</polygon>
|
||||
</customCollisionMask>
|
||||
</sprite>
|
||||
</sprites>
|
||||
</direction>
|
||||
</directions>
|
||||
</animation>
|
||||
</animations>
|
||||
</object>
|
||||
</objects>
|
||||
<events>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="109" g="230" r="255" textB="0" textG="0" textR="0" />
|
||||
<comment>Custom javascript code can access to the specified objects and to the scene:</comment>
|
||||
<comment2></comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::JsCode</type>
|
||||
<inlineCode>for(var i = 0;i<objects.length;++i) {
	objects[i].setAngle(Math.cos(runtimeScene.getTimeFromStart()/100)*90);
}</inlineCode>
|
||||
<parameterObjects>Pea</parameterObjects>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="109" g="230" r="255" textB="0" textG="0" textR="0" />
|
||||
<comment>Of course, objects are picked as in any other event: here, a window is displaying the coordinates of the pea that was clicked.</comment>
|
||||
<comment2></comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="SourisSurObjet" />
|
||||
<parameters>
|
||||
<parameter>Pea</parameter>
|
||||
<parameter></parameter>
|
||||
<parameter></parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<condition>
|
||||
<type inverted="false" value="SourisBouton" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>Left</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions />
|
||||
<events>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::JsCode</type>
|
||||
<inlineCode>var pea = objects[0];
if (!pea) {
	return;
}
window.alert("You clicked on Pea at position "+
	pea.getX()+";"+pea.getY()+" !");</inlineCode>
|
||||
<parameterObjects>Pea</parameterObjects>
|
||||
</event>
|
||||
</events>
|
||||
</event>
|
||||
</events>
|
||||
<layers>
|
||||
<layer name="" visibility="true">
|
||||
<cameras>
|
||||
<camera defaultSize="true" defaultViewport="true" height="0.000000" viewportBottom="1.000000" viewportLeft="0.000000" viewportRight="1.000000" viewportTop="0.000000" width="0.000000" />
|
||||
</cameras>
|
||||
</layer>
|
||||
</layers>
|
||||
<automatismsSharedData />
|
||||
</layout>
|
||||
</layouts>
|
||||
<externalEvents />
|
||||
<externalLayouts />
|
||||
<externalSourceFiles />
|
||||
</project>
|
After Width: | Height: | Size: 2.9 KiB |
@@ -0,0 +1,195 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<project firstLayout="">
|
||||
<gdVersion build="75" major="3" minor="5" revision="0" />
|
||||
<properties linuxExecutableFilename="" macExecutableFilename="" useExternalSourceFiles="true" winExecutableFilename="" winExecutableIconFile="">
|
||||
<name>Project</name>
|
||||
<author></author>
|
||||
<windowWidth>800</windowWidth>
|
||||
<windowHeight>600</windowHeight>
|
||||
<latestCompilationDirectory></latestCompilationDirectory>
|
||||
<maxFPS>60</maxFPS>
|
||||
<minFPS>10</minFPS>
|
||||
<verticalSync>false</verticalSync>
|
||||
<extensions>
|
||||
<extension name="BuiltinObject" />
|
||||
<extension name="BuiltinAudio" />
|
||||
<extension name="BuiltinVariables" />
|
||||
<extension name="BuiltinTime" />
|
||||
<extension name="BuiltinMouse" />
|
||||
<extension name="BuiltinKeyboard" />
|
||||
<extension name="BuiltinJoystick" />
|
||||
<extension name="BuiltinCamera" />
|
||||
<extension name="BuiltinWindow" />
|
||||
<extension name="BuiltinFile" />
|
||||
<extension name="BuiltinNetwork" />
|
||||
<extension name="BuiltinScene" />
|
||||
<extension name="BuiltinAdvanced" />
|
||||
<extension name="Sprite" />
|
||||
<extension name="BuiltinCommonInstructions" />
|
||||
<extension name="BuiltinCommonConversions" />
|
||||
<extension name="BuiltinStringInstructions" />
|
||||
<extension name="BuiltinMathematicalTools" />
|
||||
<extension name="BuiltinExternalLayouts" />
|
||||
</extensions>
|
||||
<platforms>
|
||||
<platform name="GDevelop JS platform" />
|
||||
</platforms>
|
||||
<currentPlatform>GDevelop JS platform</currentPlatform>
|
||||
</properties>
|
||||
<resources>
|
||||
<resources>
|
||||
<resource alwaysLoaded="false" file="Pea-Standard.png" kind="image" name="Pea-Standard.png" smoothed="true" userAdded="true" />
|
||||
</resources>
|
||||
<resourceFolders />
|
||||
</resources>
|
||||
<objects />
|
||||
<objectsGroups />
|
||||
<variables />
|
||||
<layouts>
|
||||
<layout b="209" disableInputWhenNotFocused="true" mangledName="New_32scene" name="New scene" oglFOV="90.000000" oglZFar="500.000000" oglZNear="1.000000" r="209" standardSortMethod="true" stopSoundsOnStartup="true" title="" v="209">
|
||||
<uiSettings associatedLayout="" grid="false" gridB="255" gridG="180" gridHeight="32" gridOffsetX="0" gridOffsetY="0" gridR="158" gridWidth="32" snap="true" windowMask="false" zoomFactor="1.000000" />
|
||||
<objectsGroups />
|
||||
<variables />
|
||||
<instances>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="411.999969" y="203.500031" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="90.000000" y="97.500015" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="468.000000" y="303.500000" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="572.000000" y="97.500015" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="147.000000" y="300.500031" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="315.000000" y="140.500031" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="200.999985" y="205.500031" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Pea" width="0.000000" x="417.000031" y="65.500015" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
</instances>
|
||||
<objects>
|
||||
<object name="Pea" type="Sprite">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<animations>
|
||||
<animation useMultipleDirections="false">
|
||||
<directions>
|
||||
<direction looping="false" timeBetweenFrames="1.000000">
|
||||
<sprites>
|
||||
<sprite hasCustomCollisionMask="false" image="Pea-Standard.png">
|
||||
<points />
|
||||
<originPoint name="origine" x="0.000000" y="0.000000" />
|
||||
<centerPoint automatic="true" name="centre" x="18.500000" y="18.500000" />
|
||||
<customCollisionMask>
|
||||
<polygon>
|
||||
<vertice x="0.000000" y="0.000000" />
|
||||
<vertice x="37.000000" y="0.000000" />
|
||||
<vertice x="37.000000" y="37.000000" />
|
||||
<vertice x="0.000000" y="37.000000" />
|
||||
</polygon>
|
||||
</customCollisionMask>
|
||||
</sprite>
|
||||
</sprites>
|
||||
</direction>
|
||||
</directions>
|
||||
</animation>
|
||||
</animations>
|
||||
</object>
|
||||
</objects>
|
||||
<events>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="0" g="255" r="128" textB="0" textG="0" textR="0" />
|
||||
<comment>Here, we use functions defined in external source files.</comment>
|
||||
<comment2></comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="109" g="230" r="255" textB="0" textG="0" textR="0" />
|
||||
<comment>Custom javascript code can access to the specified objects and to the scene:</comment>
|
||||
<comment2></comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::JsCode</type>
|
||||
<inlineCode>animateObjects(runtimeScene, objects);</inlineCode>
|
||||
<parameterObjects>Pea</parameterObjects>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="109" g="230" r="255" textB="0" textG="0" textR="0" />
|
||||
<comment>Of course, objects are picked as in any other event: here, a window is displaying the coordinates of the pea that was clicked.</comment>
|
||||
<comment2></comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="SourisSurObjet" />
|
||||
<parameters>
|
||||
<parameter>Pea</parameter>
|
||||
<parameter></parameter>
|
||||
<parameter></parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<condition>
|
||||
<type inverted="false" value="SourisBouton" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>Left</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions />
|
||||
<events>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::JsCode</type>
|
||||
<inlineCode>alertObjectPosition(objects);</inlineCode>
|
||||
<parameterObjects>Pea</parameterObjects>
|
||||
</event>
|
||||
</events>
|
||||
</event>
|
||||
</events>
|
||||
<layers>
|
||||
<layer name="" visibility="true">
|
||||
<cameras>
|
||||
<camera defaultSize="true" defaultViewport="true" height="0.000000" viewportBottom="1.000000" viewportLeft="0.000000" viewportRight="1.000000" viewportTop="0.000000" width="0.000000" />
|
||||
</cameras>
|
||||
</layer>
|
||||
</layers>
|
||||
<automatismsSharedData />
|
||||
</layout>
|
||||
</layouts>
|
||||
<externalEvents />
|
||||
<externalLayouts />
|
||||
<externalSourceFiles>
|
||||
<sourceFile filename="animate-objects.js" gdManaged="false" language="Javascript" lastBuildTimeStamp="0" />
|
||||
<sourceFile filename="alert-position.js" gdManaged="false" language="Javascript" lastBuildTimeStamp="0" />
|
||||
</externalSourceFiles>
|
||||
</project>
|
@@ -0,0 +1,8 @@
|
||||
alertObjectPosition = function(objects) {
|
||||
if (!objects[0]) {
|
||||
return;
|
||||
}
|
||||
window.alert("You clicked on object at position "+
|
||||
objects[0].getX()+";"+objects[0].getY()+"!");
|
||||
}
|
||||
|
@@ -0,0 +1,5 @@
|
||||
animateObjects = function(runtimeScene, objects) {
|
||||
for(var i = 0;i<objects.length;++i) {
|
||||
objects[i].setAngle(Math.cos(runtimeScene.getTimeFromStart()/100)*90);
|
||||
}
|
||||
}
|
112
Binaries/Output/Release_Windows/Examples/Open URL in browser.gdg
Normal file
@@ -0,0 +1,112 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<project firstLayout="">
|
||||
<gdVersion build="74" major="3" minor="5" revision="0" />
|
||||
<properties linuxExecutableFilename="" macExecutableFilename="" useExternalSourceFiles="false" winExecutableFilename="" winExecutableIconFile="">
|
||||
<name>Project</name>
|
||||
<author></author>
|
||||
<windowWidth>800</windowWidth>
|
||||
<windowHeight>600</windowHeight>
|
||||
<latestCompilationDirectory></latestCompilationDirectory>
|
||||
<maxFPS>60</maxFPS>
|
||||
<minFPS>10</minFPS>
|
||||
<verticalSync>false</verticalSync>
|
||||
<extensions>
|
||||
<extension name="BuiltinObject" />
|
||||
<extension name="BuiltinAudio" />
|
||||
<extension name="BuiltinVariables" />
|
||||
<extension name="BuiltinTime" />
|
||||
<extension name="BuiltinMouse" />
|
||||
<extension name="BuiltinKeyboard" />
|
||||
<extension name="BuiltinJoystick" />
|
||||
<extension name="BuiltinCamera" />
|
||||
<extension name="BuiltinWindow" />
|
||||
<extension name="BuiltinFile" />
|
||||
<extension name="BuiltinNetwork" />
|
||||
<extension name="BuiltinScene" />
|
||||
<extension name="BuiltinAdvanced" />
|
||||
<extension name="Sprite" />
|
||||
<extension name="BuiltinCommonInstructions" />
|
||||
<extension name="BuiltinCommonConversions" />
|
||||
<extension name="BuiltinStringInstructions" />
|
||||
<extension name="BuiltinMathematicalTools" />
|
||||
<extension name="BuiltinExternalLayouts" />
|
||||
<extension name="TextObject" />
|
||||
</extensions>
|
||||
<platforms>
|
||||
<platform name="GDevelop JS platform" />
|
||||
</platforms>
|
||||
<currentPlatform>GDevelop JS platform</currentPlatform>
|
||||
</properties>
|
||||
<resources>
|
||||
<resources />
|
||||
<resourceFolders />
|
||||
</resources>
|
||||
<objects />
|
||||
<objectsGroups />
|
||||
<variables />
|
||||
<layouts>
|
||||
<layout b="209" disableInputWhenNotFocused="true" mangledName="New_32scene" name="New scene" oglFOV="90.000000" oglZFar="500.000000" oglZNear="1.000000" r="209" standardSortMethod="true" stopSoundsOnStartup="true" title="" v="209">
|
||||
<uiSettings associatedLayout="" grid="false" gridB="255" gridG="180" gridHeight="32" gridR="158" gridWidth="32" snap="true" windowMask="false" zoomFactor="1.000000" />
|
||||
<objectsGroups />
|
||||
<variables />
|
||||
<instances>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="Explanation" width="0.000000" x="122.999969" y="268.500000" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables />
|
||||
</instance>
|
||||
</instances>
|
||||
<objects>
|
||||
<object bold="false" italic="false" name="Explanation" smoothed="true" type="TextObject::Text" underlined="false">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<string>Touch or click to open GDevelop website.</string>
|
||||
<font></font>
|
||||
<characterSize>30</characterSize>
|
||||
<color b="0" g="0" r="0" />
|
||||
</object>
|
||||
</objects>
|
||||
<events>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="SourisBouton" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>Left</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<condition>
|
||||
<type inverted="false" value="BuiltinCommonInstructions::Once" />
|
||||
<parameters />
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="LaunchFile" />
|
||||
<parameters>
|
||||
<parameter>"http://www.compilgames.net"</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
</events>
|
||||
<layers>
|
||||
<layer name="" visibility="true">
|
||||
<cameras>
|
||||
<camera defaultSize="true" defaultViewport="true" height="0.000000" viewportBottom="1.000000" viewportLeft="0.000000" viewportRight="1.000000" viewportTop="0.000000" width="0.000000" />
|
||||
</cameras>
|
||||
</layer>
|
||||
</layers>
|
||||
<automatismsSharedData />
|
||||
</layout>
|
||||
</layouts>
|
||||
<externalEvents />
|
||||
<externalLayouts />
|
||||
<externalSourceFiles />
|
||||
</project>
|
BIN
Binaries/Output/Release_Windows/Examples/ShapeCircle.png
Normal file
After Width: | Height: | Size: 510 B |
BIN
Binaries/Output/Release_Windows/Examples/ShapeCircleBorder.png
Normal file
After Width: | Height: | Size: 623 B |
BIN
Binaries/Output/Release_Windows/Examples/ShapeLine.png
Normal file
After Width: | Height: | Size: 654 B |
BIN
Binaries/Output/Release_Windows/Examples/ShapeRect.png
Normal file
After Width: | Height: | Size: 322 B |
BIN
Binaries/Output/Release_Windows/Examples/ShapeRectBorder.png
Normal file
After Width: | Height: | Size: 335 B |
BIN
Binaries/Output/Release_Windows/Examples/tiles_spritesheet.png
Normal file
After Width: | Height: | Size: 126 KiB |
@@ -1,6 +1,6 @@
|
||||
language: node_js
|
||||
before_install: "npm install -g npm"
|
||||
node_js:
|
||||
- "0.4"
|
||||
- "0.8"
|
||||
- "0.10"
|
||||
- "0.11"
|
||||
|
@@ -256,6 +256,10 @@ to set `true`; it's effectively a shortcut for `foo=true`).
|
||||
- `drop_console` -- default `false`. Pass `true` to discard calls to
|
||||
`console.*` functions.
|
||||
|
||||
- `keep_fargs` -- default `false`. Pass `true` to prevent the
|
||||
compressor from discarding unused function arguments. You need this
|
||||
for code which relies on `Function.length`.
|
||||
|
||||
### The `unsafe` option
|
||||
|
||||
It enables some transformations that *might* break code logic in certain
|
||||
@@ -400,6 +404,38 @@ Acorn is really fast (e.g. 250ms instead of 380ms on some 650K code), but
|
||||
converting the SpiderMonkey tree that Acorn produces takes another 150ms so
|
||||
in total it's a bit more than just using UglifyJS's own parser.
|
||||
|
||||
### Using UglifyJS to transform SpiderMonkey AST
|
||||
|
||||
Now you can use UglifyJS as any other intermediate tool for transforming
|
||||
JavaScript ASTs in SpiderMonkey format.
|
||||
|
||||
Example:
|
||||
|
||||
```javascript
|
||||
function uglify(ast, options, mangle) {
|
||||
// Conversion from SpiderMonkey AST to internal format
|
||||
var uAST = UglifyJS.AST_Node.from_mozilla_ast(ast);
|
||||
|
||||
// Compression
|
||||
uAST.figure_out_scope();
|
||||
uAST = uAST.transform(UglifyJS.Compressor(options));
|
||||
|
||||
// Mangling (optional)
|
||||
if (mangle) {
|
||||
uAST.figure_out_scope();
|
||||
uAST.compute_char_frequency();
|
||||
uAST.mangle_names();
|
||||
}
|
||||
|
||||
// Back-conversion to SpiderMonkey AST
|
||||
return uAST.to_mozilla_ast();
|
||||
}
|
||||
```
|
||||
|
||||
Check out
|
||||
[original blog post](http://rreverser.com/using-mozilla-ast-with-uglifyjs/)
|
||||
for details.
|
||||
|
||||
API Reference
|
||||
-------------
|
||||
|
||||
|
0
Binaries/Output/Release_Windows/JsPlatform/Tools/uglify-js/bin/uglifyjs
Normal file → Executable file
@@ -295,10 +295,10 @@ var AST_Toplevel = DEFNODE("Toplevel", "globals", {
|
||||
var parameters = [];
|
||||
|
||||
arg_parameter_pairs.forEach(function(pair) {
|
||||
var split = pair.split(":");
|
||||
var splitAt = pair.lastIndexOf(":");
|
||||
|
||||
args.push(split[0]);
|
||||
parameters.push(split[1]);
|
||||
args.push(pair.substr(0, splitAt));
|
||||
parameters.push(pair.substr(splitAt + 1));
|
||||
});
|
||||
|
||||
var wrapped_tl = "(function(" + parameters.join(",") + "){ '$ORIG'; })(" + args.join(",") + ")";
|
||||
|
@@ -775,6 +775,14 @@ merge(Compressor.prototype, {
|
||||
if (d && d.constant && d.init) return ev(d.init, compressor);
|
||||
throw def;
|
||||
});
|
||||
def(AST_Dot, function(compressor){
|
||||
if (compressor.option("unsafe") && this.property == "length") {
|
||||
var str = ev(this.expression, compressor);
|
||||
if (typeof str == "string")
|
||||
return str.length;
|
||||
}
|
||||
throw def;
|
||||
});
|
||||
})(function(node, func){
|
||||
node.DEFMETHOD("_eval", func);
|
||||
});
|
||||
@@ -889,7 +897,9 @@ merge(Compressor.prototype, {
|
||||
|| this.operator == "--"
|
||||
|| this.expression.has_side_effects(compressor);
|
||||
});
|
||||
def(AST_SymbolRef, function(compressor){ return false });
|
||||
def(AST_SymbolRef, function(compressor){
|
||||
return this.global() && this.undeclared();
|
||||
});
|
||||
def(AST_Object, function(compressor){
|
||||
for (var i = this.properties.length; --i >= 0;)
|
||||
if (this.properties[i].has_side_effects(compressor))
|
||||
@@ -1737,6 +1747,7 @@ merge(Compressor.prototype, {
|
||||
} catch(ex) {
|
||||
if (ex !== ast) throw ex;
|
||||
};
|
||||
if (!fun) return self;
|
||||
var args = fun.argnames.map(function(arg, i){
|
||||
return make_node(AST_String, self.args[i], {
|
||||
value: arg.print_to_string()
|
||||
@@ -2312,6 +2323,17 @@ merge(Compressor.prototype, {
|
||||
alternative: alternative
|
||||
});
|
||||
}
|
||||
// x=y?1:1 --> x=1
|
||||
if (consequent instanceof AST_Constant
|
||||
&& alternative instanceof AST_Constant
|
||||
&& consequent.equivalent_to(alternative)) {
|
||||
if (self.condition.has_side_effects(compressor)) {
|
||||
return AST_Seq.from_array([self.condition, make_node_from_constant(compressor, consequent.value, self)]);
|
||||
} else {
|
||||
return make_node_from_constant(compressor, consequent.value, self);
|
||||
|
||||
}
|
||||
}
|
||||
return self;
|
||||
});
|
||||
|
||||
@@ -2349,7 +2371,7 @@ merge(Compressor.prototype, {
|
||||
return make_node(AST_Dot, self, {
|
||||
expression : self.expression,
|
||||
property : prop
|
||||
});
|
||||
}).optimize(compressor);
|
||||
}
|
||||
var v = parseFloat(prop);
|
||||
if (!isNaN(v) && v.toString() == prop) {
|
||||
@@ -2361,6 +2383,19 @@ merge(Compressor.prototype, {
|
||||
return self;
|
||||
});
|
||||
|
||||
OPT(AST_Dot, function(self, compressor){
|
||||
var prop = self.property;
|
||||
if (RESERVED_WORDS(prop) && !compressor.option("screw_ie8")) {
|
||||
return make_node(AST_Sub, self, {
|
||||
expression : self.expression,
|
||||
property : make_node(AST_String, self, {
|
||||
value: prop
|
||||
})
|
||||
}).optimize(compressor);
|
||||
}
|
||||
return self.evaluate(compressor)[0];
|
||||
});
|
||||
|
||||
function literals_in_boolean_context(self, compressor) {
|
||||
if (compressor.option("booleans") && compressor.in_boolean_context()) {
|
||||
return make_node(AST_True, self);
|
||||
|
@@ -46,53 +46,68 @@
|
||||
(function(){
|
||||
|
||||
var MOZ_TO_ME = {
|
||||
TryStatement : function(M) {
|
||||
ExpressionStatement: function(M) {
|
||||
var expr = M.expression;
|
||||
if (expr.type === "Literal" && typeof expr.value === "string") {
|
||||
return new AST_Directive({
|
||||
start: my_start_token(M),
|
||||
end: my_end_token(M),
|
||||
value: expr.value
|
||||
});
|
||||
}
|
||||
return new AST_SimpleStatement({
|
||||
start: my_start_token(M),
|
||||
end: my_end_token(M),
|
||||
body: from_moz(expr)
|
||||
});
|
||||
},
|
||||
TryStatement: function(M) {
|
||||
var handlers = M.handlers || [M.handler];
|
||||
if (handlers.length > 1 || M.guardedHandlers && M.guardedHandlers.length) {
|
||||
throw new Error("Multiple catch clauses are not supported.");
|
||||
}
|
||||
return new AST_Try({
|
||||
start : my_start_token(M),
|
||||
end : my_end_token(M),
|
||||
body : from_moz(M.block).body,
|
||||
bcatch : from_moz(M.handlers[0]),
|
||||
bcatch : from_moz(handlers[0]),
|
||||
bfinally : M.finalizer ? new AST_Finally(from_moz(M.finalizer)) : null
|
||||
});
|
||||
},
|
||||
CatchClause : function(M) {
|
||||
return new AST_Catch({
|
||||
start : my_start_token(M),
|
||||
end : my_end_token(M),
|
||||
argname : from_moz(M.param),
|
||||
body : from_moz(M.body).body
|
||||
});
|
||||
Property: function(M) {
|
||||
var key = M.key;
|
||||
var name = key.type == "Identifier" ? key.name : key.value;
|
||||
var args = {
|
||||
start : my_start_token(key),
|
||||
end : my_end_token(M.value),
|
||||
key : name,
|
||||
value : from_moz(M.value)
|
||||
};
|
||||
switch (M.kind) {
|
||||
case "init":
|
||||
return new AST_ObjectKeyVal(args);
|
||||
case "set":
|
||||
args.value.name = from_moz(key);
|
||||
return new AST_ObjectSetter(args);
|
||||
case "get":
|
||||
args.value.name = from_moz(key);
|
||||
return new AST_ObjectGetter(args);
|
||||
}
|
||||
},
|
||||
ObjectExpression : function(M) {
|
||||
ObjectExpression: function(M) {
|
||||
return new AST_Object({
|
||||
start : my_start_token(M),
|
||||
end : my_end_token(M),
|
||||
properties : M.properties.map(function(prop){
|
||||
var key = prop.key;
|
||||
var name = key.type == "Identifier" ? key.name : key.value;
|
||||
var args = {
|
||||
start : my_start_token(key),
|
||||
end : my_end_token(prop.value),
|
||||
key : name,
|
||||
value : from_moz(prop.value)
|
||||
};
|
||||
switch (prop.kind) {
|
||||
case "init":
|
||||
return new AST_ObjectKeyVal(args);
|
||||
case "set":
|
||||
args.value.name = from_moz(key);
|
||||
return new AST_ObjectSetter(args);
|
||||
case "get":
|
||||
args.value.name = from_moz(key);
|
||||
return new AST_ObjectGetter(args);
|
||||
}
|
||||
prop.type = "Property";
|
||||
return from_moz(prop)
|
||||
})
|
||||
});
|
||||
},
|
||||
SequenceExpression : function(M) {
|
||||
SequenceExpression: function(M) {
|
||||
return AST_Seq.from_array(M.expressions.map(from_moz));
|
||||
},
|
||||
MemberExpression : function(M) {
|
||||
MemberExpression: function(M) {
|
||||
return new (M.computed ? AST_Sub : AST_Dot)({
|
||||
start : my_start_token(M),
|
||||
end : my_end_token(M),
|
||||
@@ -100,7 +115,7 @@
|
||||
expression : from_moz(M.object)
|
||||
});
|
||||
},
|
||||
SwitchCase : function(M) {
|
||||
SwitchCase: function(M) {
|
||||
return new (M.test ? AST_Case : AST_Default)({
|
||||
start : my_start_token(M),
|
||||
end : my_end_token(M),
|
||||
@@ -108,7 +123,14 @@
|
||||
body : M.consequent.map(from_moz)
|
||||
});
|
||||
},
|
||||
Literal : function(M) {
|
||||
VariableDeclaration: function(M) {
|
||||
return new (M.kind === "const" ? AST_Const : AST_Var)({
|
||||
start : my_start_token(M),
|
||||
end : my_end_token(M),
|
||||
definitions : M.declarations.map(from_moz)
|
||||
});
|
||||
},
|
||||
Literal: function(M) {
|
||||
var val = M.value, args = {
|
||||
start : my_start_token(M),
|
||||
end : my_end_token(M)
|
||||
@@ -128,12 +150,9 @@
|
||||
return new AST_RegExp(args);
|
||||
}
|
||||
},
|
||||
UnaryExpression: From_Moz_Unary,
|
||||
UpdateExpression: From_Moz_Unary,
|
||||
Identifier: function(M) {
|
||||
var p = FROM_MOZ_STACK[FROM_MOZ_STACK.length - 2];
|
||||
return new (M.name == "this" ? AST_This
|
||||
: p.type == "LabeledStatement" ? AST_Label
|
||||
return new ( p.type == "LabeledStatement" ? AST_Label
|
||||
: p.type == "VariableDeclarator" && p.id === M ? (p.kind == "const" ? AST_SymbolConst : AST_SymbolVar)
|
||||
: p.type == "FunctionExpression" ? (p.id === M ? AST_SymbolLambda : AST_SymbolFunarg)
|
||||
: p.type == "FunctionDeclaration" ? (p.id === M ? AST_SymbolDefun : AST_SymbolFunarg)
|
||||
@@ -147,7 +166,8 @@
|
||||
}
|
||||
};
|
||||
|
||||
function From_Moz_Unary(M) {
|
||||
MOZ_TO_ME.UpdateExpression =
|
||||
MOZ_TO_ME.UnaryExpression = function To_Moz_Unary(M) {
|
||||
var prefix = "prefix" in M ? M.prefix
|
||||
: M.type == "UnaryExpression" ? true : false;
|
||||
return new (prefix ? AST_UnaryPrefix : AST_UnaryPostfix)({
|
||||
@@ -158,14 +178,9 @@
|
||||
});
|
||||
};
|
||||
|
||||
var ME_TO_MOZ = {};
|
||||
|
||||
map("Node", AST_Node);
|
||||
map("Program", AST_Toplevel, "body@body");
|
||||
map("Function", AST_Function, "id>name, params@argnames, body%body");
|
||||
map("EmptyStatement", AST_EmptyStatement);
|
||||
map("BlockStatement", AST_BlockStatement, "body@body");
|
||||
map("ExpressionStatement", AST_SimpleStatement, "expression>body");
|
||||
map("IfStatement", AST_If, "test>condition, consequent>body, alternate>alternative");
|
||||
map("LabeledStatement", AST_LabeledStatement, "label>label, body>body");
|
||||
map("BreakStatement", AST_Break, "label>label");
|
||||
@@ -180,71 +195,257 @@
|
||||
map("ForInStatement", AST_ForIn, "left>init, right>object, body>body");
|
||||
map("DebuggerStatement", AST_Debugger);
|
||||
map("FunctionDeclaration", AST_Defun, "id>name, params@argnames, body%body");
|
||||
map("VariableDeclaration", AST_Var, "declarations@definitions");
|
||||
map("VariableDeclarator", AST_VarDef, "id>name, init>value");
|
||||
map("CatchClause", AST_Catch, "param>argname, body%body");
|
||||
|
||||
map("ThisExpression", AST_This);
|
||||
map("ArrayExpression", AST_Array, "elements@elements");
|
||||
map("FunctionExpression", AST_Function, "id>name, params@argnames, body%body");
|
||||
map("BinaryExpression", AST_Binary, "operator=operator, left>left, right>right");
|
||||
map("AssignmentExpression", AST_Assign, "operator=operator, left>left, right>right");
|
||||
map("LogicalExpression", AST_Binary, "operator=operator, left>left, right>right");
|
||||
map("AssignmentExpression", AST_Assign, "operator=operator, left>left, right>right");
|
||||
map("ConditionalExpression", AST_Conditional, "test>condition, consequent>consequent, alternate>alternative");
|
||||
map("NewExpression", AST_New, "callee>expression, arguments@args");
|
||||
map("CallExpression", AST_Call, "callee>expression, arguments@args");
|
||||
|
||||
def_to_moz(AST_Directive, function To_Moz_Directive(M) {
|
||||
return {
|
||||
type: "ExpressionStatement",
|
||||
expression: {
|
||||
type: "Literal",
|
||||
value: M.value
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_SimpleStatement, function To_Moz_ExpressionStatement(M) {
|
||||
return {
|
||||
type: "ExpressionStatement",
|
||||
expression: to_moz(M.body)
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_SwitchBranch, function To_Moz_SwitchCase(M) {
|
||||
return {
|
||||
type: "SwitchCase",
|
||||
test: to_moz(M.expression),
|
||||
consequent: M.body.map(to_moz)
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_Try, function To_Moz_TryStatement(M) {
|
||||
return {
|
||||
type: "TryStatement",
|
||||
block: to_moz_block(M),
|
||||
handler: to_moz(M.bcatch),
|
||||
guardedHandlers: [],
|
||||
finalizer: to_moz(M.bfinally)
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_Catch, function To_Moz_CatchClause(M) {
|
||||
return {
|
||||
type: "CatchClause",
|
||||
param: to_moz(M.argname),
|
||||
guard: null,
|
||||
body: to_moz_block(M)
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_Definitions, function To_Moz_VariableDeclaration(M) {
|
||||
return {
|
||||
type: "VariableDeclaration",
|
||||
kind: M instanceof AST_Const ? "const" : "var",
|
||||
declarations: M.definitions.map(to_moz)
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_Seq, function To_Moz_SequenceExpression(M) {
|
||||
return {
|
||||
type: "SequenceExpression",
|
||||
expressions: M.to_array().map(to_moz)
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_PropAccess, function To_Moz_MemberExpression(M) {
|
||||
var isComputed = M instanceof AST_Sub;
|
||||
return {
|
||||
type: "MemberExpression",
|
||||
object: to_moz(M.expression),
|
||||
computed: isComputed,
|
||||
property: isComputed ? to_moz(M.property) : {type: "Identifier", name: M.property}
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_Unary, function To_Moz_Unary(M) {
|
||||
return {
|
||||
type: M.operator == "++" || M.operator == "--" ? "UpdateExpression" : "UnaryExpression",
|
||||
operator: M.operator,
|
||||
prefix: M instanceof AST_UnaryPrefix,
|
||||
argument: to_moz(M.expression)
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_Binary, function To_Moz_BinaryExpression(M) {
|
||||
return {
|
||||
type: M.operator == "&&" || M.operator == "||" ? "LogicalExpression" : "BinaryExpression",
|
||||
left: to_moz(M.left),
|
||||
operator: M.operator,
|
||||
right: to_moz(M.right)
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_Object, function To_Moz_ObjectExpression(M) {
|
||||
return {
|
||||
type: "ObjectExpression",
|
||||
properties: M.properties.map(to_moz)
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_ObjectProperty, function To_Moz_Property(M) {
|
||||
var key = (
|
||||
is_identifier(M.key)
|
||||
? {type: "Identifier", name: M.key}
|
||||
: {type: "Literal", value: M.key}
|
||||
);
|
||||
var kind;
|
||||
if (M instanceof AST_ObjectKeyVal) {
|
||||
kind = "init";
|
||||
} else
|
||||
if (M instanceof AST_ObjectGetter) {
|
||||
kind = "get";
|
||||
} else
|
||||
if (M instanceof AST_ObjectSetter) {
|
||||
kind = "set";
|
||||
}
|
||||
return {
|
||||
type: "Property",
|
||||
kind: kind,
|
||||
key: key,
|
||||
value: to_moz(M.value)
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_Symbol, function To_Moz_Identifier(M) {
|
||||
var def = M.definition();
|
||||
return {
|
||||
type: "Identifier",
|
||||
name: def ? def.mangled_name || def.name : M.name
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_Constant, function To_Moz_Literal(M) {
|
||||
var value = M.value;
|
||||
if (typeof value === 'number' && (value < 0 || (value === 0 && 1 / value < 0))) {
|
||||
return {
|
||||
type: "UnaryExpression",
|
||||
operator: "-",
|
||||
prefix: true,
|
||||
argument: {
|
||||
type: "Literal",
|
||||
value: -value
|
||||
}
|
||||
};
|
||||
}
|
||||
return {
|
||||
type: "Literal",
|
||||
value: value
|
||||
};
|
||||
});
|
||||
|
||||
def_to_moz(AST_Atom, function To_Moz_Atom(M) {
|
||||
return {
|
||||
type: "Identifier",
|
||||
name: String(M.value)
|
||||
};
|
||||
});
|
||||
|
||||
AST_Boolean.DEFMETHOD("to_mozilla_ast", AST_Constant.prototype.to_mozilla_ast);
|
||||
AST_Null.DEFMETHOD("to_mozilla_ast", AST_Constant.prototype.to_mozilla_ast);
|
||||
AST_Hole.DEFMETHOD("to_mozilla_ast", function To_Moz_ArrayHole() { return null });
|
||||
|
||||
AST_Block.DEFMETHOD("to_mozilla_ast", AST_BlockStatement.prototype.to_mozilla_ast);
|
||||
AST_Lambda.DEFMETHOD("to_mozilla_ast", AST_Function.prototype.to_mozilla_ast);
|
||||
|
||||
/* -----[ tools ]----- */
|
||||
|
||||
function my_start_token(moznode) {
|
||||
var loc = moznode.loc;
|
||||
var range = moznode.range;
|
||||
return new AST_Token({
|
||||
file : moznode.loc && moznode.loc.source,
|
||||
line : moznode.loc && moznode.loc.start.line,
|
||||
col : moznode.loc && moznode.loc.start.column,
|
||||
pos : moznode.start,
|
||||
endpos : moznode.start
|
||||
file : loc && loc.source,
|
||||
line : loc && loc.start.line,
|
||||
col : loc && loc.start.column,
|
||||
pos : range ? range[0] : moznode.start,
|
||||
endpos : range ? range[0] : moznode.start
|
||||
});
|
||||
};
|
||||
|
||||
function my_end_token(moznode) {
|
||||
var loc = moznode.loc;
|
||||
var range = moznode.range;
|
||||
return new AST_Token({
|
||||
file : moznode.loc && moznode.loc.source,
|
||||
line : moznode.loc && moznode.loc.end.line,
|
||||
col : moznode.loc && moznode.loc.end.column,
|
||||
pos : moznode.end,
|
||||
endpos : moznode.end
|
||||
file : loc && loc.source,
|
||||
line : loc && loc.end.line,
|
||||
col : loc && loc.end.column,
|
||||
pos : range ? range[1] : moznode.end,
|
||||
endpos : range ? range[1] : moznode.end
|
||||
});
|
||||
};
|
||||
|
||||
function map(moztype, mytype, propmap) {
|
||||
var moz_to_me = "function From_Moz_" + moztype + "(M){\n";
|
||||
moz_to_me += "return new mytype({\n" +
|
||||
moz_to_me += "return new " + mytype.name + "({\n" +
|
||||
"start: my_start_token(M),\n" +
|
||||
"end: my_end_token(M)";
|
||||
|
||||
var me_to_moz = "function To_Moz_" + moztype + "(M){\n";
|
||||
me_to_moz += "return {\n" +
|
||||
"type: " + JSON.stringify(moztype);
|
||||
|
||||
if (propmap) propmap.split(/\s*,\s*/).forEach(function(prop){
|
||||
var m = /([a-z0-9$_]+)(=|@|>|%)([a-z0-9$_]+)/i.exec(prop);
|
||||
if (!m) throw new Error("Can't understand property map: " + prop);
|
||||
var moz = "M." + m[1], how = m[2], my = m[3];
|
||||
var moz = m[1], how = m[2], my = m[3];
|
||||
moz_to_me += ",\n" + my + ": ";
|
||||
if (how == "@") {
|
||||
moz_to_me += moz + ".map(from_moz)";
|
||||
} else if (how == ">") {
|
||||
moz_to_me += "from_moz(" + moz + ")";
|
||||
} else if (how == "=") {
|
||||
moz_to_me += moz;
|
||||
} else if (how == "%") {
|
||||
moz_to_me += "from_moz(" + moz + ").body";
|
||||
} else throw new Error("Can't understand operator in propmap: " + prop);
|
||||
me_to_moz += ",\n" + moz + ": ";
|
||||
switch (how) {
|
||||
case "@":
|
||||
moz_to_me += "M." + moz + ".map(from_moz)";
|
||||
me_to_moz += "M." + my + ".map(to_moz)";
|
||||
break;
|
||||
case ">":
|
||||
moz_to_me += "from_moz(M." + moz + ")";
|
||||
me_to_moz += "to_moz(M." + my + ")";
|
||||
break;
|
||||
case "=":
|
||||
moz_to_me += "M." + moz;
|
||||
me_to_moz += "M." + my;
|
||||
break;
|
||||
case "%":
|
||||
moz_to_me += "from_moz(M." + moz + ").body";
|
||||
me_to_moz += "to_moz_block(M)";
|
||||
break;
|
||||
default:
|
||||
throw new Error("Can't understand operator in propmap: " + prop);
|
||||
}
|
||||
});
|
||||
moz_to_me += "\n})}";
|
||||
|
||||
// moz_to_me = parse(moz_to_me).print_to_string({ beautify: true });
|
||||
// console.log(moz_to_me);
|
||||
moz_to_me += "\n})\n}";
|
||||
me_to_moz += "\n}\n}";
|
||||
|
||||
moz_to_me = new Function("mytype", "my_start_token", "my_end_token", "from_moz", "return(" + moz_to_me + ")")(
|
||||
mytype, my_start_token, my_end_token, from_moz
|
||||
//moz_to_me = parse(moz_to_me).print_to_string({ beautify: true });
|
||||
//me_to_moz = parse(me_to_moz).print_to_string({ beautify: true });
|
||||
//console.log(moz_to_me);
|
||||
|
||||
moz_to_me = new Function("my_start_token", "my_end_token", "from_moz", "return(" + moz_to_me + ")")(
|
||||
my_start_token, my_end_token, from_moz
|
||||
);
|
||||
return MOZ_TO_ME[moztype] = moz_to_me;
|
||||
me_to_moz = new Function("to_moz", "to_moz_block", "return(" + me_to_moz + ")")(
|
||||
to_moz, to_moz_block
|
||||
);
|
||||
MOZ_TO_ME[moztype] = moz_to_me;
|
||||
def_to_moz(mytype, me_to_moz);
|
||||
};
|
||||
|
||||
var FROM_MOZ_STACK = null;
|
||||
@@ -264,4 +465,46 @@
|
||||
return ast;
|
||||
};
|
||||
|
||||
function moz_sub_loc(token) {
|
||||
return token.line ? {
|
||||
line: token.line,
|
||||
column: token.col
|
||||
} : null;
|
||||
};
|
||||
|
||||
function set_moz_loc(mynode, moznode) {
|
||||
var start = mynode.start;
|
||||
var end = mynode.end;
|
||||
if (start.pos != null && end.pos != null) {
|
||||
moznode.range = [start.pos, end.pos];
|
||||
}
|
||||
if (start.line) {
|
||||
moznode.loc = {
|
||||
start: moz_sub_loc(start),
|
||||
end: moz_sub_loc(end)
|
||||
};
|
||||
if (start.file) {
|
||||
moznode.loc.source = start.file;
|
||||
}
|
||||
}
|
||||
return moznode;
|
||||
};
|
||||
|
||||
function def_to_moz(mytype, handler) {
|
||||
mytype.DEFMETHOD("to_mozilla_ast", function() {
|
||||
return set_moz_loc(this, handler(this));
|
||||
});
|
||||
};
|
||||
|
||||
function to_moz(node) {
|
||||
return node != null ? node.to_mozilla_ast() : null;
|
||||
};
|
||||
|
||||
function to_moz_block(node) {
|
||||
return {
|
||||
type: "BlockStatement",
|
||||
body: node.body.map(to_moz)
|
||||
};
|
||||
};
|
||||
|
||||
})();
|
||||
|
@@ -434,7 +434,13 @@ function OutputStream(options) {
|
||||
/* -----[ PARENTHESES ]----- */
|
||||
|
||||
function PARENS(nodetype, func) {
|
||||
nodetype.DEFMETHOD("needs_parens", func);
|
||||
if (Array.isArray(nodetype)) {
|
||||
nodetype.forEach(function(nodetype){
|
||||
PARENS(nodetype, func);
|
||||
});
|
||||
} else {
|
||||
nodetype.DEFMETHOD("needs_parens", func);
|
||||
}
|
||||
};
|
||||
|
||||
PARENS(AST_Node, function(){
|
||||
@@ -453,7 +459,7 @@ function OutputStream(options) {
|
||||
return first_in_statement(output);
|
||||
});
|
||||
|
||||
PARENS(AST_Unary, function(output){
|
||||
PARENS([ AST_Unary, AST_Undefined ], function(output){
|
||||
var p = output.parent();
|
||||
return p instanceof AST_PropAccess && p.expression === this;
|
||||
});
|
||||
@@ -549,7 +555,7 @@ function OutputStream(options) {
|
||||
return true;
|
||||
});
|
||||
|
||||
function assign_and_conditional_paren_rules(output) {
|
||||
PARENS([ AST_Assign, AST_Conditional ], function (output){
|
||||
var p = output.parent();
|
||||
// !(a = false) → true
|
||||
if (p instanceof AST_Unary)
|
||||
@@ -566,10 +572,7 @@ function OutputStream(options) {
|
||||
// (a = foo)["prop"] —or— (a = foo).prop
|
||||
if (p instanceof AST_PropAccess && p.expression === this)
|
||||
return true;
|
||||
};
|
||||
|
||||
PARENS(AST_Assign, assign_and_conditional_paren_rules);
|
||||
PARENS(AST_Conditional, assign_and_conditional_paren_rules);
|
||||
});
|
||||
|
||||
/* -----[ PRINTERS ]----- */
|
||||
|
||||
@@ -656,7 +659,7 @@ function OutputStream(options) {
|
||||
output.print("for");
|
||||
output.space();
|
||||
output.with_parens(function(){
|
||||
if (self.init) {
|
||||
if (self.init && !(self.init instanceof AST_EmptyStatement)) {
|
||||
if (self.init instanceof AST_Definitions) {
|
||||
self.init.print(output);
|
||||
} else {
|
||||
@@ -996,8 +999,12 @@ function OutputStream(options) {
|
||||
DEFPRINT(AST_UnaryPrefix, function(self, output){
|
||||
var op = self.operator;
|
||||
output.print(op);
|
||||
if (/^[a-z]/i.test(op))
|
||||
if (/^[a-z]/i.test(op)
|
||||
|| (/[+-]$/.test(op)
|
||||
&& self.expression instanceof AST_UnaryPrefix
|
||||
&& /^[+-]/.test(self.expression.operator))) {
|
||||
output.space();
|
||||
}
|
||||
self.expression.print(output);
|
||||
});
|
||||
DEFPRINT(AST_UnaryPostfix, function(self, output){
|
||||
|
@@ -168,14 +168,7 @@ function is_identifier_char(ch) {
|
||||
};
|
||||
|
||||
function is_identifier_string(str){
|
||||
var i = str.length;
|
||||
if (i == 0) return false;
|
||||
if (!is_identifier_start(str.charCodeAt(0))) return false;
|
||||
while (--i >= 0) {
|
||||
if (!is_identifier_char(str.charAt(i)))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return /^[a-z_$][a-z0-9_$]*$/i.test(str);
|
||||
};
|
||||
|
||||
function parse_js_number(num) {
|
||||
|
@@ -532,6 +532,7 @@ AST_Toplevel.DEFMETHOD("scope_warnings", function(options){
|
||||
}
|
||||
if (options.unreferenced
|
||||
&& (node instanceof AST_SymbolDeclaration || node instanceof AST_Label)
|
||||
&& !(node instanceof AST_SymbolCatch)
|
||||
&& node.unreferenced()) {
|
||||
AST_Node.warn("{type} {name} is declared but not referenced [{file}:{line},{col}]", {
|
||||
type: node instanceof AST_Label ? "Label" : "Symbol",
|
||||
|
0
Binaries/Output/Release_Windows/JsPlatform/Tools/uglify-js/node_modules/async/lib/async.js
generated
vendored
Normal file → Executable file
@@ -39,7 +39,6 @@
|
||||
"bugs": {
|
||||
"url": "https://github.com/substack/node-wordwrap/issues"
|
||||
},
|
||||
"homepage": "https://github.com/substack/node-wordwrap",
|
||||
"_id": "wordwrap@0.0.2",
|
||||
"_from": "wordwrap@~0.0.2"
|
||||
}
|
||||
|
@@ -40,11 +40,6 @@
|
||||
"bugs": {
|
||||
"url": "https://github.com/substack/node-optimist/issues"
|
||||
},
|
||||
"homepage": "https://github.com/substack/node-optimist",
|
||||
"_id": "optimist@0.3.7",
|
||||
"dist": {
|
||||
"shasum": "c7780ddf090cbc0c75ad951befe39aa579784ba8"
|
||||
},
|
||||
"_from": "optimist@0.3.7",
|
||||
"_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz"
|
||||
"_from": "optimist@~0.3.5"
|
||||
}
|
||||
|
0
Binaries/Output/Release_Windows/JsPlatform/Tools/uglify-js/node_modules/optimist/test/_/bin.js
generated
vendored
Normal file → Executable file
@@ -1,5 +1,12 @@
|
||||
# Change Log
|
||||
|
||||
## 0.1.34
|
||||
|
||||
* Make `SourceNode` work with windows style ("\r\n") newlines. Issue #103.
|
||||
|
||||
* Fix bug involving source contents and the
|
||||
`SourceMapGenerator.prototype.applySourceMap`. Issue #100.
|
||||
|
||||
## 0.1.33
|
||||
|
||||
* Fix some edge cases surrounding path joining and URL resolution.
|
||||
@@ -44,7 +51,7 @@
|
||||
## 0.1.29
|
||||
|
||||
* Allow duplicate entries in the `names` and `sources` arrays of source maps
|
||||
(usually from TypeScript) we are parsing. Fixes github isse 72.
|
||||
(usually from TypeScript) we are parsing. Fixes github issue 72.
|
||||
|
||||
## 0.1.28
|
||||
|
||||
|
@@ -229,6 +229,9 @@ define(function (require, exports, module) {
|
||||
aSourceMapConsumer.sources.forEach(function (sourceFile) {
|
||||
var content = aSourceMapConsumer.sourceContentFor(sourceFile);
|
||||
if (content) {
|
||||
if (aSourceMapPath) {
|
||||
sourceFile = util.join(aSourceMapPath, sourceFile);
|
||||
}
|
||||
if (sourceRoot) {
|
||||
sourceFile = util.relative(sourceRoot, sourceFile);
|
||||
}
|
||||
|
@@ -12,6 +12,13 @@ define(function (require, exports, module) {
|
||||
var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;
|
||||
var util = require('./util');
|
||||
|
||||
// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
|
||||
// operating systems these days (capturing the result).
|
||||
var REGEX_NEWLINE = /(\r?\n)/g;
|
||||
|
||||
// Matches a Windows-style newline, or any character.
|
||||
var REGEX_CHARACTER = /\r\n|[\s\S]/g;
|
||||
|
||||
/**
|
||||
* SourceNodes provide a way to abstract over interpolating/concatenating
|
||||
* snippets of generated JavaScript source code while maintaining the line and
|
||||
@@ -46,9 +53,17 @@ define(function (require, exports, module) {
|
||||
// and the SourceMap
|
||||
var node = new SourceNode();
|
||||
|
||||
// The generated code
|
||||
// Processed fragments are removed from this array.
|
||||
var remainingLines = aGeneratedCode.split('\n');
|
||||
// All even indices of this array are one line of the generated code,
|
||||
// while all odd indices are the newlines between two adjacent lines
|
||||
// (since `REGEX_NEWLINE` captures its match).
|
||||
// Processed fragments are removed from this array, by calling `shiftNextLine`.
|
||||
var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
|
||||
var shiftNextLine = function() {
|
||||
var lineContents = remainingLines.shift();
|
||||
// The last line of a file might not have a newline.
|
||||
var newLine = remainingLines.shift() || "";
|
||||
return lineContents + newLine;
|
||||
};
|
||||
|
||||
// We need to remember the position of "remainingLines"
|
||||
var lastGeneratedLine = 1, lastGeneratedColumn = 0;
|
||||
@@ -65,7 +80,7 @@ define(function (require, exports, module) {
|
||||
if (lastGeneratedLine < mapping.generatedLine) {
|
||||
var code = "";
|
||||
// Associate first line with "lastMapping"
|
||||
addMappingWithCode(lastMapping, remainingLines.shift() + "\n");
|
||||
addMappingWithCode(lastMapping, shiftNextLine());
|
||||
lastGeneratedLine++;
|
||||
lastGeneratedColumn = 0;
|
||||
// The remaining code is added without mapping
|
||||
@@ -89,7 +104,7 @@ define(function (require, exports, module) {
|
||||
// to the SourceNode without any mapping.
|
||||
// Each line is added as separate string.
|
||||
while (lastGeneratedLine < mapping.generatedLine) {
|
||||
node.add(remainingLines.shift() + "\n");
|
||||
node.add(shiftNextLine());
|
||||
lastGeneratedLine++;
|
||||
}
|
||||
if (lastGeneratedColumn < mapping.generatedColumn) {
|
||||
@@ -104,12 +119,10 @@ define(function (require, exports, module) {
|
||||
if (remainingLines.length > 0) {
|
||||
if (lastMapping) {
|
||||
// Associate the remaining code in the current line with "lastMapping"
|
||||
var lastLine = remainingLines.shift();
|
||||
if (remainingLines.length > 0) lastLine += "\n";
|
||||
addMappingWithCode(lastMapping, lastLine);
|
||||
addMappingWithCode(lastMapping, shiftNextLine());
|
||||
}
|
||||
// and add the remaining lines without any mapping
|
||||
node.add(remainingLines.join("\n"));
|
||||
node.add(remainingLines.join(""));
|
||||
}
|
||||
|
||||
// Copy sourcesContent into SourceNode
|
||||
@@ -348,8 +361,8 @@ define(function (require, exports, module) {
|
||||
lastOriginalSource = null;
|
||||
sourceMappingActive = false;
|
||||
}
|
||||
chunk.split('').forEach(function (ch, idx, array) {
|
||||
if (ch === '\n') {
|
||||
chunk.match(REGEX_CHARACTER).forEach(function (ch, idx, array) {
|
||||
if (REGEX_NEWLINE.test(ch)) {
|
||||
generated.line++;
|
||||
generated.column = 0;
|
||||
// Mappings end at eol
|
||||
@@ -371,7 +384,7 @@ define(function (require, exports, module) {
|
||||
});
|
||||
}
|
||||
} else {
|
||||
generated.column++;
|
||||
generated.column += ch.length;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "source-map",
|
||||
"description": "Generates and consumes source maps",
|
||||
"version": "0.1.33",
|
||||
"version": "0.1.34",
|
||||
"homepage": "https://github.com/mozilla/source-map",
|
||||
"author": {
|
||||
"name": "Nick Fitzgerald",
|
||||
@@ -87,6 +87,10 @@
|
||||
{
|
||||
"name": "Jmeas Smith",
|
||||
"email": "jellyes2@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Michael Z Goddard",
|
||||
"email": "mzgoddard@gmail.com"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
@@ -121,10 +125,10 @@
|
||||
"bugs": {
|
||||
"url": "https://github.com/mozilla/source-map/issues"
|
||||
},
|
||||
"_id": "source-map@0.1.33",
|
||||
"_id": "source-map@0.1.34",
|
||||
"dist": {
|
||||
"shasum": "084aa9b839de22b0f7c09112b4b062985d5be580"
|
||||
"shasum": "85afcfe6fe98b6b91eb0c1bf4f010e67aab69029"
|
||||
},
|
||||
"_from": "source-map@~0.1.33",
|
||||
"_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.33.tgz"
|
||||
"_from": "source-map@0.1.34",
|
||||
"_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz"
|
||||
}
|
||||
|
0
Binaries/Output/Release_Windows/JsPlatform/Tools/uglify-js/node_modules/source-map/test/run-tests.js
generated
vendored
Normal file → Executable file
@@ -309,16 +309,22 @@ define(function (require, exports, module) {
|
||||
original: { line: 2, column: 2 },
|
||||
source: '../coffee/foo.coffee'
|
||||
});
|
||||
bundleMap.setSourceContent('../coffee/foo.coffee', 'foo coffee');
|
||||
bundleMap.addMapping({
|
||||
generated: { line: 13, column: 13 },
|
||||
original: { line: 12, column: 12 },
|
||||
source: '/bar.coffee'
|
||||
});
|
||||
bundleMap.setSourceContent('/bar.coffee', 'bar coffee');
|
||||
bundleMap.addMapping({
|
||||
generated: { line: 23, column: 23 },
|
||||
original: { line: 22, column: 22 },
|
||||
source: 'http://www.example.com/baz.coffee'
|
||||
});
|
||||
bundleMap.setSourceContent(
|
||||
'http://www.example.com/baz.coffee',
|
||||
'baz coffee'
|
||||
);
|
||||
bundleMap = new SourceMapConsumer(bundleMap.toJSON());
|
||||
|
||||
var minifiedMap = new SourceMapGenerator({
|
||||
@@ -352,16 +358,19 @@ define(function (require, exports, module) {
|
||||
original: { line: 2, column: 2 },
|
||||
source: sources[0]
|
||||
});
|
||||
map.setSourceContent(sources[0], 'foo coffee');
|
||||
map.addMapping({
|
||||
generated: { line: 11, column: 11 },
|
||||
original: { line: 12, column: 12 },
|
||||
source: sources[1]
|
||||
});
|
||||
map.setSourceContent(sources[1], 'bar coffee');
|
||||
map.addMapping({
|
||||
generated: { line: 21, column: 21 },
|
||||
original: { line: 22, column: 22 },
|
||||
source: sources[2]
|
||||
});
|
||||
map.setSourceContent(sources[2], 'baz coffee');
|
||||
return map.toJSON();
|
||||
}
|
||||
|
||||
|
@@ -13,6 +13,12 @@ define(function (require, exports, module) {
|
||||
var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer;
|
||||
var SourceNode = require('../../lib/source-map/source-node').SourceNode;
|
||||
|
||||
function forEachNewline(fn) {
|
||||
return function (assert, util) {
|
||||
['\n', '\r\n'].forEach(fn.bind(null, assert, util));
|
||||
}
|
||||
}
|
||||
|
||||
exports['test .add()'] = function (assert, util) {
|
||||
var node = new SourceNode(null, null, null);
|
||||
|
||||
@@ -128,18 +134,27 @@ define(function (require, exports, module) {
|
||||
assert.equal(node.toString(), 'hey sexy mama, want to watch Futurama?');
|
||||
};
|
||||
|
||||
exports['test .toStringWithSourceMap()'] = function (assert, util) {
|
||||
exports['test .toStringWithSourceMap()'] = forEachNewline(function (assert, util, nl) {
|
||||
var node = new SourceNode(null, null, null,
|
||||
['(function () {\n',
|
||||
['(function () {' + nl,
|
||||
' ',
|
||||
new SourceNode(1, 0, 'a.js', 'someCall', 'originalCall'),
|
||||
new SourceNode(1, 8, 'a.js', '()'),
|
||||
';\n',
|
||||
' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';\n',
|
||||
';' + nl,
|
||||
' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';' + nl,
|
||||
'}());']);
|
||||
var map = node.toStringWithSourceMap({
|
||||
var result = node.toStringWithSourceMap({
|
||||
file: 'foo.js'
|
||||
}).map;
|
||||
});
|
||||
|
||||
assert.equal(result.code, [
|
||||
'(function () {',
|
||||
' someCall();',
|
||||
' if (foo) bar();',
|
||||
'}());'
|
||||
].join(nl));
|
||||
|
||||
var map = result.map;
|
||||
var mapWithoutOptions = node.toStringWithSourceMap().map;
|
||||
|
||||
assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator');
|
||||
@@ -191,11 +206,12 @@ define(function (require, exports, module) {
|
||||
assert.equal(actual.source, null);
|
||||
assert.equal(actual.line, null);
|
||||
assert.equal(actual.column, null);
|
||||
};
|
||||
});
|
||||
|
||||
exports['test .fromStringWithSourceMap()'] = function (assert, util) {
|
||||
exports['test .fromStringWithSourceMap()'] = forEachNewline(function (assert, util, nl) {
|
||||
var testCode = util.testGeneratedCode.replace(/\n/g, nl);
|
||||
var node = SourceNode.fromStringWithSourceMap(
|
||||
util.testGeneratedCode,
|
||||
testCode,
|
||||
new SourceMapConsumer(util.testMap));
|
||||
|
||||
var result = node.toStringWithSourceMap({
|
||||
@@ -204,17 +220,17 @@ define(function (require, exports, module) {
|
||||
var map = result.map;
|
||||
var code = result.code;
|
||||
|
||||
assert.equal(code, util.testGeneratedCode);
|
||||
assert.equal(code, testCode);
|
||||
assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator');
|
||||
map = map.toJSON();
|
||||
assert.equal(map.version, util.testMap.version);
|
||||
assert.equal(map.file, util.testMap.file);
|
||||
assert.equal(map.mappings, util.testMap.mappings);
|
||||
};
|
||||
});
|
||||
|
||||
exports['test .fromStringWithSourceMap() empty map'] = function (assert, util) {
|
||||
exports['test .fromStringWithSourceMap() empty map'] = forEachNewline(function (assert, util, nl) {
|
||||
var node = SourceNode.fromStringWithSourceMap(
|
||||
util.testGeneratedCode,
|
||||
util.testGeneratedCode.replace(/\n/g, nl),
|
||||
new SourceMapConsumer(util.emptyMap));
|
||||
var result = node.toStringWithSourceMap({
|
||||
file: 'min.js'
|
||||
@@ -222,22 +238,22 @@ define(function (require, exports, module) {
|
||||
var map = result.map;
|
||||
var code = result.code;
|
||||
|
||||
assert.equal(code, util.testGeneratedCode);
|
||||
assert.equal(code, util.testGeneratedCode.replace(/\n/g, nl));
|
||||
assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator');
|
||||
map = map.toJSON();
|
||||
assert.equal(map.version, util.emptyMap.version);
|
||||
assert.equal(map.file, util.emptyMap.file);
|
||||
assert.equal(map.mappings.length, util.emptyMap.mappings.length);
|
||||
assert.equal(map.mappings, util.emptyMap.mappings);
|
||||
};
|
||||
});
|
||||
|
||||
exports['test .fromStringWithSourceMap() complex version'] = function (assert, util) {
|
||||
exports['test .fromStringWithSourceMap() complex version'] = forEachNewline(function (assert, util, nl) {
|
||||
var input = new SourceNode(null, null, null, [
|
||||
"(function() {\n",
|
||||
" var Test = {};\n",
|
||||
" ", new SourceNode(1, 0, "a.js", "Test.A = { value: 1234 };\n"),
|
||||
" ", new SourceNode(2, 0, "a.js", "Test.A.x = 'xyz';"), "\n",
|
||||
"}());\n",
|
||||
"(function() {" + nl,
|
||||
" var Test = {};" + nl,
|
||||
" ", new SourceNode(1, 0, "a.js", "Test.A = { value: 1234 };" + nl),
|
||||
" ", new SourceNode(2, 0, "a.js", "Test.A.x = 'xyz';"), nl,
|
||||
"}());" + nl,
|
||||
"/* Generated Source */"]);
|
||||
input = input.toStringWithSourceMap({
|
||||
file: 'foo.js'
|
||||
@@ -258,27 +274,35 @@ define(function (require, exports, module) {
|
||||
map = map.toJSON();
|
||||
var inputMap = input.map.toJSON();
|
||||
util.assertEqualMaps(assert, map, inputMap);
|
||||
};
|
||||
});
|
||||
|
||||
exports['test .toStringWithSourceMap() merging duplicate mappings'] = function (assert, util) {
|
||||
exports['test .toStringWithSourceMap() merging duplicate mappings'] = forEachNewline(function (assert, util, nl) {
|
||||
var input = new SourceNode(null, null, null, [
|
||||
new SourceNode(1, 0, "a.js", "(function"),
|
||||
new SourceNode(1, 0, "a.js", "() {\n"),
|
||||
new SourceNode(1, 0, "a.js", "() {" + nl),
|
||||
" ",
|
||||
new SourceNode(1, 0, "a.js", "var Test = "),
|
||||
new SourceNode(1, 0, "b.js", "{};\n"),
|
||||
new SourceNode(1, 0, "b.js", "{};" + nl),
|
||||
new SourceNode(2, 0, "b.js", "Test"),
|
||||
new SourceNode(2, 0, "b.js", ".A", "A"),
|
||||
new SourceNode(2, 20, "b.js", " = { value: ", "A"),
|
||||
"1234",
|
||||
new SourceNode(2, 40, "b.js", " };\n", "A"),
|
||||
"}());\n",
|
||||
new SourceNode(2, 40, "b.js", " };" + nl, "A"),
|
||||
"}());" + nl,
|
||||
"/* Generated Source */"
|
||||
]);
|
||||
input = input.toStringWithSourceMap({
|
||||
file: 'foo.js'
|
||||
});
|
||||
|
||||
assert.equal(input.code, [
|
||||
"(function() {",
|
||||
" var Test = {};",
|
||||
"Test.A = { value: 1234 };",
|
||||
"}());",
|
||||
"/* Generated Source */"
|
||||
].join(nl))
|
||||
|
||||
var correctMap = new SourceMapGenerator({
|
||||
file: 'foo.js'
|
||||
});
|
||||
@@ -333,22 +357,40 @@ define(function (require, exports, module) {
|
||||
var inputMap = input.map.toJSON();
|
||||
correctMap = correctMap.toJSON();
|
||||
util.assertEqualMaps(assert, inputMap, correctMap);
|
||||
};
|
||||
});
|
||||
|
||||
exports['test .toStringWithSourceMap() multi-line SourceNodes'] = function (assert, util) {
|
||||
exports['test .toStringWithSourceMap() multi-line SourceNodes'] = forEachNewline(function (assert, util, nl) {
|
||||
var input = new SourceNode(null, null, null, [
|
||||
new SourceNode(1, 0, "a.js", "(function() {\nvar nextLine = 1;\nanotherLine();\n"),
|
||||
new SourceNode(2, 2, "b.js", "Test.call(this, 123);\n"),
|
||||
new SourceNode(2, 2, "b.js", "this['stuff'] = 'v';\n"),
|
||||
new SourceNode(2, 2, "b.js", "anotherLine();\n"),
|
||||
"/*\nGenerated\nSource\n*/\n",
|
||||
new SourceNode(3, 4, "c.js", "anotherLine();\n"),
|
||||
"/*\nGenerated\nSource\n*/"
|
||||
new SourceNode(1, 0, "a.js", "(function() {" + nl + "var nextLine = 1;" + nl + "anotherLine();" + nl),
|
||||
new SourceNode(2, 2, "b.js", "Test.call(this, 123);" + nl),
|
||||
new SourceNode(2, 2, "b.js", "this['stuff'] = 'v';" + nl),
|
||||
new SourceNode(2, 2, "b.js", "anotherLine();" + nl),
|
||||
"/*" + nl + "Generated" + nl + "Source" + nl + "*/" + nl,
|
||||
new SourceNode(3, 4, "c.js", "anotherLine();" + nl),
|
||||
"/*" + nl + "Generated" + nl + "Source" + nl + "*/"
|
||||
]);
|
||||
input = input.toStringWithSourceMap({
|
||||
file: 'foo.js'
|
||||
});
|
||||
|
||||
assert.equal(input.code, [
|
||||
"(function() {",
|
||||
"var nextLine = 1;",
|
||||
"anotherLine();",
|
||||
"Test.call(this, 123);",
|
||||
"this['stuff'] = 'v';",
|
||||
"anotherLine();",
|
||||
"/*",
|
||||
"Generated",
|
||||
"Source",
|
||||
"*/",
|
||||
"anotherLine();",
|
||||
"/*",
|
||||
"Generated",
|
||||
"Source",
|
||||
"*/"
|
||||
].join(nl));
|
||||
|
||||
var correctMap = new SourceMapGenerator({
|
||||
file: 'foo.js'
|
||||
});
|
||||
@@ -391,6 +433,12 @@ define(function (require, exports, module) {
|
||||
var inputMap = input.map.toJSON();
|
||||
correctMap = correctMap.toJSON();
|
||||
util.assertEqualMaps(assert, inputMap, correctMap);
|
||||
});
|
||||
|
||||
exports['test .toStringWithSourceMap() with empty string'] = function (assert, util) {
|
||||
var node = new SourceNode(1, 0, 'empty.js', '');
|
||||
var result = node.toStringWithSourceMap();
|
||||
assert.equal(result.code, '');
|
||||
};
|
||||
|
||||
exports['test setSourceContent with toStringWithSourceMap'] = function (assert, util) {
|
||||
|
@@ -1,14 +1,14 @@
|
||||
lib-cov
|
||||
*.seed
|
||||
*.log
|
||||
*.csv
|
||||
*.dat
|
||||
*.out
|
||||
*.pid
|
||||
*.gz
|
||||
pids
|
||||
logs
|
||||
results
|
||||
npm-debug.log
|
||||
node_modules
|
||||
/test/output.js
|
||||
lib-cov
|
||||
*.seed
|
||||
*.log
|
||||
*.csv
|
||||
*.dat
|
||||
*.out
|
||||
*.pid
|
||||
*.gz
|
||||
pids
|
||||
logs
|
||||
results
|
||||
npm-debug.log
|
||||
node_modules
|
||||
/test/output.js
|
||||
|
@@ -1,3 +1,3 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.10"
|
@@ -1,19 +1,19 @@
|
||||
Copyright (c) 2013 Forbes Lindesay
|
||||
|
||||
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
|
||||
AUTHORS OR 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
|
||||
Copyright (c) 2013 Forbes Lindesay
|
||||
|
||||
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
|
||||
AUTHORS OR 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.
|
@@ -1,15 +1,15 @@
|
||||
# uglify-to-browserify
|
||||
|
||||
A transform to make UglifyJS work in browserify.
|
||||
|
||||
[](https://travis-ci.org/ForbesLindesay/uglify-to-browserify)
|
||||
[](https://gemnasium.com/ForbesLindesay/uglify-to-browserify)
|
||||
[](http://badge.fury.io/js/uglify-to-browserify)
|
||||
|
||||
## Installation
|
||||
|
||||
npm install uglify-to-browserify
|
||||
|
||||
## License
|
||||
|
||||
# uglify-to-browserify
|
||||
|
||||
A transform to make UglifyJS work in browserify.
|
||||
|
||||
[](https://travis-ci.org/ForbesLindesay/uglify-to-browserify)
|
||||
[](https://gemnasium.com/ForbesLindesay/uglify-to-browserify)
|
||||
[](http://badge.fury.io/js/uglify-to-browserify)
|
||||
|
||||
## Installation
|
||||
|
||||
npm install uglify-to-browserify
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
@@ -1,49 +1,49 @@
|
||||
'use strict'
|
||||
|
||||
var fs = require('fs')
|
||||
var PassThrough = require('stream').PassThrough
|
||||
var Transform = require('stream').Transform
|
||||
|
||||
if (typeof Transform === 'undefined') {
|
||||
throw new Error('UglifyJS only supports browserify when using node >= 0.10.x')
|
||||
}
|
||||
|
||||
var cache = {}
|
||||
module.exports = transform
|
||||
function transform(file) {
|
||||
if (!/tools\/node\.js$/.test(file.replace(/\\/g,'/'))) return new PassThrough();
|
||||
if (cache[file]) return makeStream(cache[file])
|
||||
var uglify = require(file)
|
||||
var src = 'var sys = require("util");\nvar MOZ_SourceMap = require("source-map");\nvar UglifyJS = exports;\n' + uglify.FILES.map(function (path) { return fs.readFileSync(path, 'utf8') }).join('\n')
|
||||
|
||||
var ast = uglify.parse(src)
|
||||
ast.figure_out_scope()
|
||||
|
||||
var variables = ast.variables
|
||||
.map(function (node, name) {
|
||||
return name
|
||||
})
|
||||
|
||||
src += '\n\n' + variables.map(function (v) { return 'exports.' + v + ' = ' + v + ';' }).join('\n') + '\n\n'
|
||||
|
||||
src += 'exports.AST_Node.warn_function = function (txt) { if (typeof console != "undefined" && typeof console.warn === "function") console.warn(txt) }\n\n'
|
||||
|
||||
src += 'exports.minify = ' + uglify.minify.toString() + ';\n\n'
|
||||
src += 'exports.describe_ast = ' + uglify.describe_ast.toString() + ';'
|
||||
|
||||
// TODO: remove once https://github.com/substack/node-browserify/issues/631 is resolved
|
||||
src = src.replace(/"for"/g, '"fo" + "r"')
|
||||
|
||||
cache[file] = src
|
||||
return makeStream(src);
|
||||
}
|
||||
|
||||
function makeStream(src) {
|
||||
var res = new Transform();
|
||||
res._transform = function (chunk, encoding, callback) { callback() }
|
||||
res._flush = function (callback) {
|
||||
res.push(src)
|
||||
callback()
|
||||
}
|
||||
return res;
|
||||
}
|
||||
'use strict'
|
||||
|
||||
var fs = require('fs')
|
||||
var PassThrough = require('stream').PassThrough
|
||||
var Transform = require('stream').Transform
|
||||
|
||||
if (typeof Transform === 'undefined') {
|
||||
throw new Error('UglifyJS only supports browserify when using node >= 0.10.x')
|
||||
}
|
||||
|
||||
var cache = {}
|
||||
module.exports = transform
|
||||
function transform(file) {
|
||||
if (!/tools\/node\.js$/.test(file.replace(/\\/g,'/'))) return new PassThrough();
|
||||
if (cache[file]) return makeStream(cache[file])
|
||||
var uglify = require(file)
|
||||
var src = 'var sys = require("util");\nvar MOZ_SourceMap = require("source-map");\nvar UglifyJS = exports;\n' + uglify.FILES.map(function (path) { return fs.readFileSync(path, 'utf8') }).join('\n')
|
||||
|
||||
var ast = uglify.parse(src)
|
||||
ast.figure_out_scope()
|
||||
|
||||
var variables = ast.variables
|
||||
.map(function (node, name) {
|
||||
return name
|
||||
})
|
||||
|
||||
src += '\n\n' + variables.map(function (v) { return 'exports.' + v + ' = ' + v + ';' }).join('\n') + '\n\n'
|
||||
|
||||
src += 'exports.AST_Node.warn_function = function (txt) { if (typeof console != "undefined" && typeof console.warn === "function") console.warn(txt) }\n\n'
|
||||
|
||||
src += 'exports.minify = ' + uglify.minify.toString() + ';\n\n'
|
||||
src += 'exports.describe_ast = ' + uglify.describe_ast.toString() + ';'
|
||||
|
||||
// TODO: remove once https://github.com/substack/node-browserify/issues/631 is resolved
|
||||
src = src.replace(/"for"/g, '"fo" + "r"')
|
||||
|
||||
cache[file] = src
|
||||
return makeStream(src);
|
||||
}
|
||||
|
||||
function makeStream(src) {
|
||||
var res = new Transform();
|
||||
res._transform = function (chunk, encoding, callback) { callback() }
|
||||
res._flush = function (callback) {
|
||||
res.push(src)
|
||||
callback()
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
@@ -24,11 +24,6 @@
|
||||
"bugs": {
|
||||
"url": "https://github.com/ForbesLindesay/uglify-to-browserify/issues"
|
||||
},
|
||||
"homepage": "https://github.com/ForbesLindesay/uglify-to-browserify",
|
||||
"_id": "uglify-to-browserify@1.0.2",
|
||||
"dist": {
|
||||
"shasum": "978bcc450796c2487cd7f8bb47cb8f703a6f5115"
|
||||
},
|
||||
"_from": "uglify-to-browserify@~1.0.0",
|
||||
"_resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz"
|
||||
"_from": "uglify-to-browserify@~1.0.0"
|
||||
}
|
||||
|
@@ -1,22 +1,22 @@
|
||||
var fs = require('fs')
|
||||
var br = require('../')
|
||||
var test = fs.readFileSync(require.resolve('uglify-js/test/run-tests.js'), 'utf8')
|
||||
.replace(/^#.*\n/, '')
|
||||
|
||||
var transform = br(require.resolve('uglify-js'))
|
||||
transform.pipe(fs.createWriteStream(__dirname + '/output.js'))
|
||||
.on('close', function () {
|
||||
Function('module,require', test)({
|
||||
filename: require.resolve('uglify-js/test/run-tests.js')
|
||||
},
|
||||
function (name) {
|
||||
if (name === '../tools/node') {
|
||||
return require('./output.js')
|
||||
} else if (/^[a-z]+$/.test(name)) {
|
||||
return require(name)
|
||||
} else {
|
||||
throw new Error('I didn\'t expect you to require ' + name)
|
||||
}
|
||||
})
|
||||
})
|
||||
var fs = require('fs')
|
||||
var br = require('../')
|
||||
var test = fs.readFileSync(require.resolve('uglify-js/test/run-tests.js'), 'utf8')
|
||||
.replace(/^#.*\n/, '')
|
||||
|
||||
var transform = br(require.resolve('uglify-js'))
|
||||
transform.pipe(fs.createWriteStream(__dirname + '/output.js'))
|
||||
.on('close', function () {
|
||||
Function('module,require', test)({
|
||||
filename: require.resolve('uglify-js/test/run-tests.js')
|
||||
},
|
||||
function (name) {
|
||||
if (name === '../tools/node') {
|
||||
return require('./output.js')
|
||||
} else if (/^[a-z]+$/.test(name)) {
|
||||
return require(name)
|
||||
} else {
|
||||
throw new Error('I didn\'t expect you to require ' + name)
|
||||
}
|
||||
})
|
||||
})
|
||||
transform.end(fs.readFileSync(require.resolve('uglify-js'), 'utf8'))
|
@@ -232,3 +232,83 @@ cond_5: {
|
||||
some_condition() && some_other_condition() && do_something();
|
||||
}
|
||||
}
|
||||
|
||||
cond_7: {
|
||||
options = {
|
||||
conditionals: true,
|
||||
evaluate : true
|
||||
};
|
||||
input: {
|
||||
var x, y, z, a, b;
|
||||
// compress these
|
||||
if (y) {
|
||||
x = 1+1;
|
||||
} else {
|
||||
x = 2;
|
||||
}
|
||||
|
||||
if (y) {
|
||||
x = 1+1;
|
||||
} else if (z) {
|
||||
x = 2;
|
||||
} else {
|
||||
x = 3-1;
|
||||
}
|
||||
|
||||
x = y ? 'foo' : 'fo'+'o';
|
||||
|
||||
x = y ? 'foo' : y ? 'foo' : 'fo'+'o';
|
||||
|
||||
// Compress conditions that have side effects
|
||||
if (condition()) {
|
||||
x = 10+10;
|
||||
} else {
|
||||
x = 20;
|
||||
}
|
||||
|
||||
if (z) {
|
||||
x = 'fuji';
|
||||
} else if (condition()) {
|
||||
x = 'fu'+'ji';
|
||||
} else {
|
||||
x = 'fuji';
|
||||
}
|
||||
|
||||
x = condition() ? 'foobar' : 'foo'+'bar';
|
||||
|
||||
// don't compress these
|
||||
x = y ? a : b;
|
||||
|
||||
x = y ? 'foo' : 'fo';
|
||||
}
|
||||
expect: {
|
||||
var x, y, z, a, b;
|
||||
x = 2;
|
||||
x = 2;
|
||||
x = 'foo';
|
||||
x = 'foo';
|
||||
x = (condition(), 20);
|
||||
x = z ? 'fuji' : (condition(), 'fuji');
|
||||
x = (condition(), 'foobar');
|
||||
x = y ? a : b;
|
||||
x = y ? 'foo' : 'fo';
|
||||
}
|
||||
}
|
||||
|
||||
cond_7_1: {
|
||||
options = {
|
||||
conditionals: true,
|
||||
evaluate : true
|
||||
};
|
||||
input: {
|
||||
// access to global should be assumed to have side effects
|
||||
if (y) {
|
||||
x = 1+1;
|
||||
} else {
|
||||
x = 2;
|
||||
}
|
||||
}
|
||||
expect: {
|
||||
x = (y, 2);
|
||||
}
|
||||
}
|
||||
|
@@ -26,7 +26,7 @@ dot_properties: {
|
||||
a.foo = "bar";
|
||||
a["if"] = "if";
|
||||
a["*"] = "asterisk";
|
||||
a.\u0EB3 = "unicode";
|
||||
a["\u0EB3"] = "unicode";
|
||||
a[""] = "whitespace";
|
||||
a["1_1"] = "foo";
|
||||
}
|
||||
@@ -48,7 +48,27 @@ dot_properties_es5: {
|
||||
a.foo = "bar";
|
||||
a.if = "if";
|
||||
a["*"] = "asterisk";
|
||||
a.\u0EB3 = "unicode";
|
||||
a["\u0EB3"] = "unicode";
|
||||
a[""] = "whitespace";
|
||||
}
|
||||
}
|
||||
|
||||
evaluate_length: {
|
||||
options = {
|
||||
properties: true,
|
||||
unsafe: true,
|
||||
evaluate: true
|
||||
};
|
||||
input: {
|
||||
a = "foo".length;
|
||||
a = ("foo" + "bar")["len" + "gth"];
|
||||
a = b.length;
|
||||
a = ("foo" + b).length;
|
||||
}
|
||||
expect: {
|
||||
a = 3;
|
||||
a = 6;
|
||||
a = b.length;
|
||||
a = ("foo" + b).length;
|
||||
}
|
||||
}
|
||||
|
@@ -91,9 +91,11 @@ make_sequences_4: {
|
||||
lift_sequences_1: {
|
||||
options = { sequences: true };
|
||||
input: {
|
||||
var foo, x, y, bar;
|
||||
foo = !(x(), y(), bar());
|
||||
}
|
||||
expect: {
|
||||
var foo, x, y, bar;
|
||||
x(), y(), foo = !bar();
|
||||
}
|
||||
}
|
||||
@@ -101,10 +103,12 @@ lift_sequences_1: {
|
||||
lift_sequences_2: {
|
||||
options = { sequences: true, evaluate: true };
|
||||
input: {
|
||||
var foo, bar;
|
||||
foo.x = (foo = {}, 10);
|
||||
bar = (bar = {}, 10);
|
||||
}
|
||||
expect: {
|
||||
var foo, bar;
|
||||
foo.x = (foo = {}, 10),
|
||||
bar = {}, bar = 10;
|
||||
}
|
||||
@@ -113,9 +117,11 @@ lift_sequences_2: {
|
||||
lift_sequences_3: {
|
||||
options = { sequences: true, conditionals: true };
|
||||
input: {
|
||||
var x, foo, bar, baz;
|
||||
x = (foo(), bar(), baz()) ? 10 : 20;
|
||||
}
|
||||
expect: {
|
||||
var x, foo, bar, baz;
|
||||
foo(), bar(), x = baz() ? 10 : 20;
|
||||
}
|
||||
}
|
||||
@@ -123,9 +129,11 @@ lift_sequences_3: {
|
||||
lift_sequences_4: {
|
||||
options = { side_effects: true };
|
||||
input: {
|
||||
var x, foo, bar, baz;
|
||||
x = (foo, bar, baz);
|
||||
}
|
||||
expect: {
|
||||
var x, foo, bar, baz;
|
||||
x = baz;
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,103 @@
|
||||
// Testing UglifyJS <-> SpiderMonkey AST conversion
|
||||
// through generative testing.
|
||||
|
||||
var UglifyJS = require(".."),
|
||||
escodegen = require("escodegen"),
|
||||
esfuzz = require("esfuzz"),
|
||||
estraverse = require("estraverse"),
|
||||
prefix = Array(20).join("\b") + " ";
|
||||
|
||||
// Normalizes input AST for UglifyJS in order to get correct comparison.
|
||||
|
||||
function normalizeInput(ast) {
|
||||
return estraverse.replace(ast, {
|
||||
enter: function(node, parent) {
|
||||
switch (node.type) {
|
||||
// Internally mark all the properties with semi-standard type "Property".
|
||||
case "ObjectExpression":
|
||||
node.properties.forEach(function (property) {
|
||||
property.type = "Property";
|
||||
});
|
||||
break;
|
||||
|
||||
// Since UglifyJS doesn"t recognize different types of property keys,
|
||||
// decision on SpiderMonkey node type is based on check whether key
|
||||
// can be valid identifier or not - so we do in input AST.
|
||||
case "Property":
|
||||
var key = node.key;
|
||||
if (key.type === "Literal" && typeof key.value === "string" && UglifyJS.is_identifier(key.value)) {
|
||||
node.key = {
|
||||
type: "Identifier",
|
||||
name: key.value
|
||||
};
|
||||
} else if (key.type === "Identifier" && !UglifyJS.is_identifier(key.name)) {
|
||||
node.key = {
|
||||
type: "Literal",
|
||||
value: key.name
|
||||
};
|
||||
}
|
||||
break;
|
||||
|
||||
// UglifyJS internally flattens all the expression sequences - either
|
||||
// to one element (if sequence contains only one element) or flat list.
|
||||
case "SequenceExpression":
|
||||
node.expressions = node.expressions.reduce(function flatten(list, expr) {
|
||||
return list.concat(expr.type === "SequenceExpression" ? expr.expressions.reduce(flatten, []) : [expr]);
|
||||
}, []);
|
||||
if (node.expressions.length === 1) {
|
||||
return node.expressions[0];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = function(options) {
|
||||
console.log("--- UglifyJS <-> Mozilla AST conversion");
|
||||
|
||||
for (var counter = 0; counter < options.iterations; counter++) {
|
||||
process.stdout.write(prefix + counter + "/" + options.iterations);
|
||||
|
||||
var ast1 = normalizeInput(esfuzz.generate({
|
||||
maxDepth: options.maxDepth
|
||||
}));
|
||||
|
||||
var ast2 =
|
||||
UglifyJS
|
||||
.AST_Node
|
||||
.from_mozilla_ast(ast1)
|
||||
.to_mozilla_ast();
|
||||
|
||||
var astPair = [
|
||||
{name: 'expected', value: ast1},
|
||||
{name: 'actual', value: ast2}
|
||||
];
|
||||
|
||||
var jsPair = astPair.map(function(item) {
|
||||
return {
|
||||
name: item.name,
|
||||
value: escodegen.generate(item.value)
|
||||
}
|
||||
});
|
||||
|
||||
if (jsPair[0].value !== jsPair[1].value) {
|
||||
var fs = require("fs");
|
||||
var acorn = require("acorn");
|
||||
|
||||
fs.existsSync("tmp") || fs.mkdirSync("tmp");
|
||||
|
||||
jsPair.forEach(function (item) {
|
||||
var fileName = "tmp/dump_" + item.name;
|
||||
var ast = acorn.parse(item.value);
|
||||
fs.writeFileSync(fileName + ".js", item.value);
|
||||
fs.writeFileSync(fileName + ".json", JSON.stringify(ast, null, 2));
|
||||
});
|
||||
|
||||
process.stdout.write("\n");
|
||||
throw new Error("Got different outputs, check out tmp/dump_*.{js,json} for codes and ASTs.");
|
||||
}
|
||||
}
|
||||
|
||||
process.stdout.write(prefix + "Probability of error is less than " + (100 / options.iterations) + "%, stopping.\n");
|
||||
};
|
6
Binaries/Output/Release_Windows/JsPlatform/Tools/uglify-js/test/run-tests.js
Normal file → Executable file
@@ -17,6 +17,12 @@ if (failures) {
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
var run_ast_conversion_tests = require("./mozilla-ast");
|
||||
|
||||
run_ast_conversion_tests({
|
||||
iterations: 1000
|
||||
});
|
||||
|
||||
/* -----[ utils ]----- */
|
||||
|
||||
function tmpl() {
|
||||
|
@@ -115,7 +115,7 @@ exports.minify = function(files, options) {
|
||||
if (options.sourceMapIncludeSources) {
|
||||
for (var file in sourcesContent) {
|
||||
if (sourcesContent.hasOwnProperty(file)) {
|
||||
options.source_map.get().setSourceContent(file, sourcesContent[file]);
|
||||
output.source_map.get().setSourceContent(file, sourcesContent[file]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -126,6 +126,11 @@ exports.minify = function(files, options) {
|
||||
}
|
||||
var stream = UglifyJS.OutputStream(output);
|
||||
toplevel.print(stream);
|
||||
|
||||
if(options.outSourceMap){
|
||||
stream += "\n//# sourceMappingURL=" + options.outSourceMap;
|
||||
}
|
||||
|
||||
return {
|
||||
code : stream + "",
|
||||
map : output.source_map + ""
|
||||
|
1
Binaries/Output/Release_Windows/SelectLanguage-ru.cfg
Normal file
@@ -0,0 +1 @@
|
||||
ru_RU
|
@@ -1,3 +1,3 @@
|
||||
Game Develop JS platform
|
||||
GDevelop JS platform
|
||||
Angry Peas
|
||||
Demonstrate how to use physics to create a "Angry Birds" like game.
|
@@ -1,3 +1,3 @@
|
||||
Game Develop C++ platform
|
||||
GDevelop C++ platform
|
||||
Castle-Doodle (Platformer)
|
||||
A game where you have to reach the end of the level by jumping on platforms.
|
@@ -1,4 +1,4 @@
|
||||
Game Develop C++ platform
|
||||
GDevelop C++ platform
|
||||
2D Soldier game
|
||||
Advanced template: 2D shooter game where the player is controlling a soldier
|
||||
on a battlefield. Level editor included.
|
@@ -1,3 +1,3 @@
|
||||
Game Develop JS platform
|
||||
GDevelop JS platform
|
||||
Enhanced tutorial
|
||||
An improved version of tutorial available on www.wiki.compilgames.net
|
@@ -1,3 +1,3 @@
|
||||
Game Develop C++ platform
|
||||
GDevelop C++ platform
|
||||
Racing game
|
||||
A basic racing game using the physics engine and with AI controlled cars.
|
@@ -1,3 +1,3 @@
|
||||
Game Develop C++ platform
|
||||
GDevelop C++ platform
|
||||
Shoot'em up
|
||||
Template showing how to make a shoot'em up game
|
@@ -1,4 +1,4 @@
|
||||
Game Develop C++ platform
|
||||
GDevelop C++ platform
|
||||
Space Marine
|
||||
Template showing how to setup a character being controlled by
|
||||
the keyboard and the mouse and how to handle obstacles
|
@@ -1,3 +1,3 @@
|
||||
Game Develop JS platform
|
||||
GDevelop JS platform
|
||||
Platformer
|
||||
Platformer game with enemies, moving platforms and coins.
|
@@ -1,3 +1,3 @@
|
||||
Game Develop JS platform
|
||||
GDevelop JS platform
|
||||
Web Shoot 'em up
|
||||
A side-scrolling shoot-'em-up game
|
@@ -1,4 +1,4 @@
|
||||
Game Develop JS platform
|
||||
GDevelop JS platform
|
||||
Web Soldier game
|
||||
2D shooter game where the player is controlling a soldier
|
||||
on a battlefield.
|
BIN
Binaries/Output/Release_Windows/locale/fr_FR/TileMapObject.mo
Normal file
588
Binaries/Output/Release_Windows/locale/fr_FR/TileMapObject.po
Normal file
@@ -0,0 +1,588 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GDevelop\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-09-23 22:25+0100\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Florian Rival <Florian.rival@gmail.com>\n"
|
||||
"Language-Team: Florian \"4ian\" Rival <Florian.rival@gmail.com>\n"
|
||||
"Language: fr_FR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.6.7\n"
|
||||
"X-Poedit-Basepath: ../../../../..\n"
|
||||
"X-Poedit-SearchPath-0: Extensions/TileMapObject\n"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:41
|
||||
#: Extensions/TileMapObject/Extension.cpp:89
|
||||
#: Extensions/TileMapObject/Extension.cpp:132
|
||||
#: Extensions/TileMapObject/Extension.cpp:165
|
||||
#: Extensions/TileMapObject/Extension.cpp:179
|
||||
msgid "Tile Map Object"
|
||||
msgstr "Objet carte de tuiles"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:42
|
||||
msgid "Extension allowing to use tile map objects."
|
||||
msgstr ""
|
||||
"Extension permettant d'utiliser des objets pour dessiner un carte avec des "
|
||||
"tuiles."
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:47
|
||||
msgid "Tile Map"
|
||||
msgstr "Carte de tuiles"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:48
|
||||
msgid "Displays a tile map"
|
||||
msgstr "Affiche une carte de tuiles"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:57
|
||||
msgid "Width"
|
||||
msgstr "Largeur"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:58
|
||||
msgid "Test the width of a Tile Map Object."
|
||||
msgstr "Teste la largeur d'un objet Carte de tuiles."
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:59
|
||||
msgid "The width of _PARAM0_ is _PARAM1__PARAM2_"
|
||||
msgstr "La largeur de _PARAM0_ est _PARAM1__PARAM2_"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:60
|
||||
#: Extensions/TileMapObject/Extension.cpp:73
|
||||
msgid "Size"
|
||||
msgstr "Taille"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:63
|
||||
#: Extensions/TileMapObject/Extension.cpp:76
|
||||
#: Extensions/TileMapObject/Extension.cpp:93
|
||||
#: Extensions/TileMapObject/Extension.cpp:101
|
||||
#: Extensions/TileMapObject/Extension.cpp:105
|
||||
#: Extensions/TileMapObject/Extension.cpp:109
|
||||
#: Extensions/TileMapObject/Extension.cpp:113
|
||||
#: Extensions/TileMapObject/Extension.cpp:119
|
||||
#: Extensions/TileMapObject/Extension.cpp:143
|
||||
#: Extensions/TileMapObject/Extension.cpp:148
|
||||
#: Extensions/TileMapObject/Extension.cpp:155
|
||||
msgid "Object"
|
||||
msgstr "Objet"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:64
|
||||
#: Extensions/TileMapObject/Extension.cpp:77
|
||||
msgid "Sign of the test"
|
||||
msgstr "Signe du test"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:65
|
||||
#: Extensions/TileMapObject/Extension.cpp:78
|
||||
msgid "Value to test"
|
||||
msgstr "Valeur à tester"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:70
|
||||
msgid "Height"
|
||||
msgstr "Hauteur"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:71
|
||||
msgid "Test the height of a Tile Map Object."
|
||||
msgstr "Teste la hauteur d'un objet Carte de tuiles."
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:72
|
||||
msgid "The height of _PARAM0_ is _PARAM1__PARAM2_"
|
||||
msgstr "La hauteur de _PARAM0_ est _PARAM1__PARAM2_"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:83
|
||||
msgid "Collision with one tile"
|
||||
msgstr "Collision avec une tuile"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:84
|
||||
msgid "Test if an object collides a specific tile."
|
||||
msgstr "Teste si un objet est en collision avec une tuile."
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:85
|
||||
msgid ""
|
||||
"_PARAM4_ is in collision with the tile at _PARAM2_;_PARAM3_ (layer _PARAM1_) "
|
||||
"of _PARAM0_"
|
||||
msgstr ""
|
||||
"_PARAM4_ est en collision avec le tuile _PARAM2_;_PARAM3_ (calque _PARAM1_) "
|
||||
"de _PARAM0_"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:86
|
||||
msgid "Collisions"
|
||||
msgstr "Collisions"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:90
|
||||
#: Extensions/TileMapObject/Extension.cpp:133
|
||||
msgid "Tile layer (0: Back, 1: Middle, 2: Top)"
|
||||
msgstr "Calque de la tuile (0 : fond, 1 : milieu, 2 : dessus)"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:91
|
||||
#: Extensions/TileMapObject/Extension.cpp:134
|
||||
msgid "Tile column"
|
||||
msgstr "Colonne de la tuile"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:92
|
||||
#: Extensions/TileMapObject/Extension.cpp:135
|
||||
msgid "Tile row"
|
||||
msgstr "Ligne de la tuile"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:100
|
||||
msgid "Tile width"
|
||||
msgstr "Largeur de la tuile"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:100
|
||||
#: Extensions/TileMapObject/Extension.cpp:104
|
||||
#: Extensions/TileMapObject/Extension.cpp:129
|
||||
msgid "Tiles"
|
||||
msgstr "Tuiles"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:104
|
||||
msgid "Tile height"
|
||||
msgstr "Hauteur de la tuile"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:108
|
||||
msgid "Map width (tiles)"
|
||||
msgstr "Largeur de la carte (en tuiles)"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:108
|
||||
msgid "Map width"
|
||||
msgstr "Largeur de la carte"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:108
|
||||
#: Extensions/TileMapObject/Extension.cpp:112
|
||||
#: Extensions/TileMapObject/Extension.cpp:118
|
||||
#: Extensions/TileMapObject/Extension.cpp:142
|
||||
#: Extensions/TileMapObject/Extension.cpp:147
|
||||
msgid "Map"
|
||||
msgstr "Carte"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:112
|
||||
msgid "Map height (tiles)"
|
||||
msgstr "Hauteur de la carte (en tuiles)"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:112
|
||||
msgid "Map height"
|
||||
msgstr "Hauteur de la carte"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:118
|
||||
msgid "Get the Tile (id)"
|
||||
msgstr "Récupérer une tuile (son ID)"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:120
|
||||
msgid "Layer"
|
||||
msgstr "Calque"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:121
|
||||
msgid "Column"
|
||||
msgstr "Colonne"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:122
|
||||
msgid "Row"
|
||||
msgstr "Ligne"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:126
|
||||
msgid "Change a tile"
|
||||
msgstr "Changer une tuile"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:127
|
||||
msgid "Change a tile at a specific cell."
|
||||
msgstr "Changer une tuile à une position spécifique."
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:128
|
||||
msgid ""
|
||||
"Set tile #_PARAM4_ at the cell _PARAM2_;_PARAM3_ (layer: _PARAM1_) in "
|
||||
"_PARAM0_"
|
||||
msgstr ""
|
||||
"Mettre la tuile #_PARAM4_ dans la cellule _PARAM2_;_PARAM3_ (calque : "
|
||||
"_PARAM1_) de _PARAM0_"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:136
|
||||
msgid "New tile Id (-1 to delete the tile)"
|
||||
msgstr "ID de la nouvelle tuile (-1 pour effacer la tuile)"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:142
|
||||
msgid "Get tile column from X coordinates"
|
||||
msgstr "Obtenir la colonne depuis la coordonnée X"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:144
|
||||
msgid "X"
|
||||
msgstr "X"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:147
|
||||
msgid "Get tile row from Y coordinates"
|
||||
msgstr "Obtenir la ligne depuis la coordonnée Y"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:149
|
||||
msgid "Y"
|
||||
msgstr "Y"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:154
|
||||
msgid "Save the tile map"
|
||||
msgstr "Enregistre la carte de tuiles"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:154
|
||||
msgid "Save the tile map content in a string"
|
||||
msgstr "Sauvegarde le contenu de la carte dans une chaîne de caractère"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:154
|
||||
msgid "Saving"
|
||||
msgstr "Sauvegarde"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:159
|
||||
msgid "Load the tiles from a string"
|
||||
msgstr "Charger les tuiles depuis une chaîne de caractère"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:160
|
||||
msgid "Load the tiles from a string."
|
||||
msgstr "Charge les tuiles depuis une chaîne de caractère."
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:161
|
||||
msgid "Load the tiles of _PARAM0_ from _PARAM1_"
|
||||
msgstr "Charger les tuiles de _PARAM0_ depuis _PARAM1_"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:162
|
||||
msgid "Loading"
|
||||
msgstr "Chargement"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:166
|
||||
msgid "The string representing the tiles"
|
||||
msgstr "La chaîne de caractère représentant les tuiles"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:173
|
||||
msgid "Change the tileset texture"
|
||||
msgstr "Changer la texture du jeu de tuiles"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:174
|
||||
msgid "Change the tileset texture."
|
||||
msgstr "Change la texture du jeu de tuiles."
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:175
|
||||
msgid "Change the tileset texture of _PARAM0_ to _PARAM1_"
|
||||
msgstr "Mettre _PARAM1_ en tant que texture du jeu de tuiles de _PARAM0_"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:176
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:34
|
||||
msgid "Tileset"
|
||||
msgstr "Jeu de tuiles"
|
||||
|
||||
#: Extensions/TileMapObject/Extension.cpp:180
|
||||
msgid "The new texture name"
|
||||
msgstr "Nom de la nouvelle texture"
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:48
|
||||
msgid "Rectangle Shape"
|
||||
msgstr "Rectangle"
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:50
|
||||
msgid "Triangle Shape (top-left)"
|
||||
msgstr "Triangle (en haut à gauche)"
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:51
|
||||
msgid "Triangle Shape (top-right)"
|
||||
msgstr "Triangle (en haut à droite)"
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:52
|
||||
msgid "Triangle Shape (bottom-right)"
|
||||
msgstr "Triangle (en bas à droite)"
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:53
|
||||
msgid "Triangle Shape (bottom-left)"
|
||||
msgstr "Triangle (en bas à gauche)"
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:55
|
||||
msgid "Half-rectangle (top)"
|
||||
msgstr "Demi-rectangle (haut)"
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:56
|
||||
msgid "Half-rectangle (right)"
|
||||
msgstr "Demi-rectangle (droite)"
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:57
|
||||
msgid "Half-rectangle (bottom)"
|
||||
msgstr "Demi-rectangle (bas)"
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:58
|
||||
msgid "Half-rectangle (left)"
|
||||
msgstr "Demi-rectangle (gauche)"
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:152
|
||||
msgid "This polygon must be convex, it's not the case."
|
||||
msgstr "Le polygon de collision doit être convexe, ce n'est pas le cas."
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:247
|
||||
msgid "Enter the X position of the point ( regarding the tile )."
|
||||
msgstr "Entrer la position X du point (par rapport à la tuile)."
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:247
|
||||
msgid "X position"
|
||||
msgstr "Position X"
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:248
|
||||
msgid "Enter the Y position of the point ( regarding the tile )."
|
||||
msgstr "Entrer la position Y du point (par rapport à la tuile)."
|
||||
|
||||
#: Extensions/TileMapObject/TileEditor.cpp:248
|
||||
msgid "Y position"
|
||||
msgstr "Position Y"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapConfigurationEditor.cpp:59
|
||||
msgid ""
|
||||
"The map will be smaller after that change. You can possibly lose data.\n"
|
||||
"Are you sure to continue ?"
|
||||
msgstr ""
|
||||
"La carte sera plus petite après ce changement. Des données seront perdues.\n"
|
||||
"Etes-vous sûr(e) de continuer ?"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapConfigurationEditor.cpp:60
|
||||
msgid "Map size"
|
||||
msgstr "Taille de la carte"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapConfigurationEditor.cpp:74
|
||||
msgid ""
|
||||
"http://www.wiki.compilgames.net/doku.php/en/game_develop/documentation/"
|
||||
"manual/built_tilemap/tilemapconfig"
|
||||
msgstr ""
|
||||
"http://www.wiki.compilgames.net/doku.php/game_develop/documentation/manual/"
|
||||
"built_tilemap/tilemapconfig"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:48
|
||||
msgid "Configure the tileset"
|
||||
msgstr "Configurer le jeu de tuiles"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:50
|
||||
msgid "Edit the selected tile"
|
||||
msgstr "Editer la tuile sélectionnée"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:50
|
||||
msgid "Opens the tile editor to edit the tile collision mask."
|
||||
msgstr "Ouvre l'éditeur de tuiles pour éditer son masque de collision."
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:83
|
||||
msgid "Pencil mode"
|
||||
msgstr "Mode pinceau"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:83
|
||||
msgid ""
|
||||
"Pencil mode\n"
|
||||
"Add tiles only where the mouse goes."
|
||||
msgstr ""
|
||||
"Mode pinceau\n"
|
||||
"Ajoute des tuiles uniquement où la souris passe"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:85
|
||||
msgid "Rectangle mode"
|
||||
msgstr "Mode rectangle"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:85
|
||||
msgid ""
|
||||
"Rectangle mode\n"
|
||||
"Add tile in a rectangle from the position where the mouse was pressed to the "
|
||||
"position the mouse was released."
|
||||
msgstr ""
|
||||
"Mode rectangle\n"
|
||||
"Ajoute des tuiles dans un rectangle."
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:89
|
||||
msgid "Fill layer"
|
||||
msgstr "Remplir un calque"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:89
|
||||
msgid "Fill the whole layer with the selected tile."
|
||||
msgstr "Remplir le calque avec la tuile sélectionnée."
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:91
|
||||
msgid "Erase all the layer"
|
||||
msgstr "Vider un calque"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:91
|
||||
msgid "Delete all the tiles from the current layer."
|
||||
msgstr "Supprime toutes les tuiles du calque courant."
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:101
|
||||
msgid "Change map size"
|
||||
msgstr "Changer la taille de la carte"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:105
|
||||
msgid "Current layer:"
|
||||
msgstr "Calque actuel:"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:118
|
||||
msgid "Hide upper layers"
|
||||
msgstr "Cacher les calques supérieurs"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:134
|
||||
msgid ""
|
||||
"Use left mouse click to add the current tile and right click to remove it."
|
||||
msgstr ""
|
||||
"Utiliser le clic gauche pour ajouter une tuile et le clic droit pour un "
|
||||
"supprimer une."
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:150
|
||||
msgid "Help about this object"
|
||||
msgstr "Aide pour cet objet"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:239
|
||||
msgid ""
|
||||
"The tileset is the texture containing all the tiles which will be used in "
|
||||
"your tilemap object."
|
||||
msgstr ""
|
||||
"Le jeu de tuiles consiste en la texture qui contient toutes les tuiles qui "
|
||||
"seront utilisée pour l'objet."
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:246
|
||||
msgid ""
|
||||
"Note: the tilemap object needs to have all the tiles in a single texture."
|
||||
msgstr "Note: l'objet carte de tuiles ne peut utiliser qu'une seule texture."
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:261
|
||||
msgid "Tileset texture:"
|
||||
msgstr "Texture du jeu de tuiles:"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:281
|
||||
msgid "Tile size:"
|
||||
msgstr "Taille des tuiles:"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:300
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:333
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:463
|
||||
msgid "x"
|
||||
msgstr "x"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:310
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:343
|
||||
msgid "pixels"
|
||||
msgstr "pixels"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:314
|
||||
msgid "Tile spacing:"
|
||||
msgstr "Espace entre les tuiles:"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:347
|
||||
msgid "Preview:"
|
||||
msgstr "Aperçu :"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:368
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:489
|
||||
msgid "Help on this dialog"
|
||||
msgstr "Aide pour cette boîte de dialogue"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:445
|
||||
msgid "Map size:"
|
||||
msgstr "Taille de la carte:"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:473
|
||||
msgid "tiles"
|
||||
msgstr "tuiles"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:557
|
||||
msgid "Collidable"
|
||||
msgstr "Collisions ?"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:557
|
||||
msgid "Activates the collision mask for collision detection"
|
||||
msgstr "Active le masque de collision"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:559
|
||||
msgid "Predefined shape"
|
||||
msgstr "Forme prédéfinie"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:569
|
||||
msgid "Add a point"
|
||||
msgstr "Ajouter un point"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:569
|
||||
msgid "Add a point to the collision mask"
|
||||
msgstr "Ajouter un point au masque de collision"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:571
|
||||
msgid "Edit point position..."
|
||||
msgstr "Editer la position du point..."
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:571
|
||||
msgid "Edit the selected point position..."
|
||||
msgstr "Edite la position du point sélectionné..."
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:573
|
||||
msgid "Remove selected point"
|
||||
msgstr "Supprimer le point sélectionné"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.cpp:573
|
||||
msgid "Removes the selected point"
|
||||
msgstr "Supprime le point sélectionné"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapObjectEditor.cpp:77
|
||||
msgid "Tile editor"
|
||||
msgstr "Editeur de tuile"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapObjectEditor.cpp:135
|
||||
msgid "Do you want to cancel all the changes made ?"
|
||||
msgstr "Êtes-vous sûr(e) d'annuler tous les changements apportés à l'objet ?"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapObjectEditor.cpp:135
|
||||
#: Extensions/TileMapObject/TileMapObjectEditor.cpp:211
|
||||
#: Extensions/TileMapObject/TileMapObjectEditor.cpp:217
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmation"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapObjectEditor.cpp:188
|
||||
msgid ""
|
||||
"http://www.wiki.compilgames.net/doku.php/en/game_develop/documentation/"
|
||||
"manual/built_tilemap"
|
||||
msgstr ""
|
||||
"http://www.wiki.compilgames.net/doku.php/game_develop/documentation/manual/"
|
||||
"built_tilemap"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapObjectEditor.cpp:211
|
||||
msgid "Are you sure you want to clear the whole layer ?"
|
||||
msgstr "Etes-vous sûr(e) de vouloir vider le calque ?"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapObjectEditor.cpp:217
|
||||
msgid "Are you sure you want to fill the whole layer with that tile ?"
|
||||
msgstr "Etes vous sûr(e) de vouloir remplir le calque avec cette tuile ?"
|
||||
|
||||
#: Extensions/TileMapObject/TileSetConfigurationEditor.cpp:49
|
||||
msgid "Images bank's editor"
|
||||
msgstr "Editeur de la banque d'images"
|
||||
|
||||
#: Extensions/TileMapObject/TileSetConfigurationEditor.cpp:97
|
||||
msgid ""
|
||||
"Please display the image bank's editor and select an image before clicking "
|
||||
"on this button."
|
||||
msgstr ""
|
||||
"Affichez l'éditeur de la banque d'image, et sélectionnez une image avant de "
|
||||
"cliquer sur ce bouton."
|
||||
|
||||
#: Extensions/TileMapObject/TileSetConfigurationEditor.cpp:133
|
||||
msgid ""
|
||||
"http://www.wiki.compilgames.net/doku.php/en/game_develop/documentation/"
|
||||
"manual/built_tilemap/tilesetconfig"
|
||||
msgstr ""
|
||||
"http://www.wiki.compilgames.net/doku.php/game_develop/documentation/manual/"
|
||||
"built_tilemap/tilesetconfig"
|
||||
|
||||
#: Extensions/TileMapObject/TileSetPanel.cpp:133
|
||||
msgid "You haven't selected a tileset yet."
|
||||
msgstr "Vous n'avez pas sélectionné de jeu de tuiles."
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.h:70
|
||||
msgid "TileMap Object Editor"
|
||||
msgstr "Editeur de carte de tuiles"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.h:112
|
||||
msgid "Tileset configuration"
|
||||
msgstr "Configuration du jeu de tuiles"
|
||||
|
||||
#: Extensions/TileMapObject/TileMapDialogs.h:137
|
||||
msgid "Tilemap size configuration"
|
||||
msgstr "Configuration de la taille de la carte"
|
||||
|
||||
#~ msgid "Reset to the default collision mask"
|
||||
#~ msgstr "Rétablir le masque de collision par défaut"
|
||||
|
||||
#~ msgid "Reset the tile collision mask to the default one"
|
||||
#~ msgstr "Rétablit le masque de collision par défaut de la tuile"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "You haven't selected a tileset yet.\n"
|
||||
#~ "Click on \"Configure the tileset\" to choose one."
|
||||
#~ msgstr ""
|
||||
#~ "Vous n'avez pas encore choisi un jeu de tuiles.\n"
|
||||
#~ "Cliquer sur \"Configurer le jeu de tuiles\" pour en choisir un."
|
BIN
Binaries/Output/Release_Windows/locale/ru_RU/GD.mo
Normal file
24138
Binaries/Output/Release_Windows/locale/ru_RU/GD.po
Normal file
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 55 KiB |
BIN
Binaries/Output/Release_Windows/res/TileMapExplainPicture.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
Binaries/Output/Release_Windows/res/TileMapIcon16.png
Normal file
After Width: | Height: | Size: 240 B |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 611 B |
Before Width: | Height: | Size: 991 B |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.5 KiB |
BIN
Binaries/Output/Release_Windows/res/editMask32.png
Normal file
After Width: | Height: | Size: 685 B |
Before Width: | Height: | Size: 4.9 KiB |
BIN
Binaries/Output/Release_Windows/res/fill16.png
Normal file
After Width: | Height: | Size: 559 B |