Compare commits

...

359 Commits

Author SHA1 Message Date
Florian Rival
4ba3ec1a9d Merge pull request #63 from victorlevasseur/master
Do not give the focus to EventEditor when mouse is over it
2014-12-23 16:37:57 +01:00
victorlevasseur
378721ea1e Still give the focus on Windows 2014-12-23 16:01:11 +01:00
Florian Rival
a79600f302 Ensure that Platformer Objects are not stuck in platforms.
Fixed PlatformerObjectAutomatism::SetSlopeMaxAngle.
2014-12-23 14:24:01 +01:00
Victor Levasseur
868950f721 Merge remote-tracking branch 'upstream/master' 2014-12-23 11:42:39 +01:00
Victor Levasseur
9cd6c781da Do not give the focus to EventEditor when mouse is over it 2014-12-23 11:40:41 +01:00
Florian Rival
30de4d82cb Merge pull request #62 from victorlevasseur/master
Fix font size (when font is italic) in ProjectExtensionsDialog
2014-12-23 11:26:50 +01:00
Florian Rival
38b8dae7c7 Fixed severe memory leaks when loading textures or fonts in GDCpp.
Renamed RessourcesLoader to ResourcesLoader.
2014-12-22 19:31:01 +01:00
Victor Levasseur
0aaf2c221f Add a removed include in ProjectExtensionsDialog.cpp 2014-12-22 18:37:25 +01:00
victorlevasseur
c71337c3f9 Fix wrong font on Linux in project extensions dialog 2014-12-22 18:31:48 +01:00
Florian Rival
2ff89dc967 Merge pull request #61 from 4ian/feature-new-startherepage
New Start Here Page
2014-12-22 17:26:30 +01:00
Florian Rival
7f26b3f7a4 Finished new start page. 2014-12-22 17:24:07 +01:00
Florian Rival
b063f560cc New StartHerePage and removed useless files 2014-12-22 14:17:38 +01:00
Florian Rival
e5989571ee Version bump and little wording changes 2014-12-21 22:49:40 +01:00
Florian Rival
efa64b6505 Allow adding objects to a group using a dedicated dialog in Objects Editor 2014-12-21 22:08:57 +01:00
Florian Rival
ee303a5f7a Ensure only appropriate ribbon buttons are enabled in Objects Editor 2014-12-21 21:38:47 +01:00
Florian Rival
330bd24c02 Ensure games are closed before destroying the main frame (prevent shutdown crashes) 2014-12-21 20:31:45 +01:00
Florian Rival
b2033eb3fd Ensure cursor goes back to the default one when not hovering a button 2014-12-21 20:31:09 +01:00
Florian Rival
ee33dc6768 Move in the scene editor by keeping the middle button pressed 2014-12-21 19:50:47 +01:00
Florian Rival
e7bb56f203 Merge branch 'master' of github.com:4ian/GD 2014-12-21 18:50:53 +01:00
Florian Rival
2b02bcc3c8 Removed useless deprecated function in gdjs::Exporter 2014-12-21 18:50:48 +01:00
Florian Rival
232f98511d Merge pull request #59 from victorlevasseur/objectEditorImprovements
Object editor improvements
2014-12-21 18:45:04 +01:00
Victor Levasseur
abdfd08806 Some improvements to the objects list 2014-12-21 12:01:47 +01:00
Victor Levasseur
293c008eed Move only the item when setting a group global
Various fixes
2014-12-20 17:51:09 +01:00
Florian Rival
615d1d72f9 Ensure the focused object type is considered as selected after a refresh in ChooseObjectTypeDialog 2014-12-17 20:30:01 +01:00
Florian Rival
55165519d2 Removed deprecated VideoObject extension 2014-12-17 19:53:33 +01:00
Florian Rival
5cd8c56ee2 Updated translation 2014-12-15 14:16:50 +01:00
Victor Levasseur
0d1521f791 Do not refresh the object list when set an object global 2014-12-14 21:49:48 +01:00
Florian Rival
6bf8a89612 Removed GameDevShare.com export option 2014-12-14 21:31:46 +01:00
Florian Rival
a7da97ba4d Merge pull request #60 from 4ian/feature-event-store
Added the Event Store, which offers event templates shared on GDevApp.com
2014-12-14 20:54:18 +01:00
Florian Rival
55b42ddee6 Fixed LayerVisible condition 2014-12-14 20:49:38 +01:00
Florian Rival
cf991818d9 Removed useless deprecated dialogs 2014-12-14 19:31:42 +01:00
Florian Rival
592b202218 Finished event store and refactoring in InstructionSelectorDialog 2014-12-14 17:36:14 +01:00
Florian Rival
ef616baca3 [WIP] Improved event store and made group events added from template editable using the event store 2014-12-14 16:54:32 +01:00
Florian Rival
3be2561ceb [WIP] Basic working event store. Parameter edition was deactivated for now. 2014-12-12 18:41:51 +01:00
Victor Levasseur
ff170070ce Disable up/down buttons when a group is selected 2014-12-12 00:13:56 +01:00
Victor Levasseur
2379aa086c Fix being unable to delete an object from a global group 2014-12-12 00:00:59 +01:00
Florian Rival
9984802a9d [WIP] Started creating the event store and refactoring on parameters 2014-12-11 15:55:49 +01:00
Florian Rival
973665cd33 Fixed incorrect start page position on Linux 2014-12-10 15:12:53 +01:00
Florian Rival
2124d87107 Changed Mouse instructions description to mention touchscreen support 2014-12-10 15:12:31 +01:00
Victor Levasseur
8d335c571a Fix a bug when refreshing the ObjectsEditor 2014-12-09 06:48:33 +01:00
Florian Rival
97b4ae7b1a Added SceneWidth/Height for HTML5 games and fixed SceneWindowWidth/Height 2014-12-08 14:29:23 +01:00
Victor Levasseur
a707b51c41 Can create a group by dragging an object on "Groups" tree item 2014-12-07 11:55:11 +01:00
Victor Levasseur
c519c26787 Fix a bug when renaming the same object multiple times 2014-12-07 11:13:05 +01:00
Victor Levasseur
bcc4decd3c Merge remote-tracking branch 'upstream/master' into objectEditorImprovements 2014-12-06 19:05:56 +01:00
Victor Levasseur
8310853fd9 Make some items not editable 2014-12-06 18:48:04 +01:00
Victor Levasseur
e4dd9d1df2 Remove the group dialog 2014-12-06 18:36:56 +01:00
Victor Levasseur
891d055695 Hide the confirmation message when deleting an object from a group (in ObjectsEditor) 2014-12-06 18:35:26 +01:00
Victor Levasseur
227d5daa78 Some fixes 2014-12-06 16:44:19 +01:00
Florian Rival
b58db65442 Ensure insertion of images are done in alphabetical order with wxGTK 2014-12-06 16:33:34 +01:00
Victor Levasseur
8d8cb27d24 Add menu to delete objects from groups
Fix compilation failure on Travis CI
2014-12-06 16:29:01 +01:00
Victor Levasseur
92bc85775c Can drag&drop objects into groups
Add thumbnails in the ObjectListDialogsHelper
2014-12-06 15:48:19 +01:00
Victor Levasseur
1c32a2501c Separate objects and groups in ObjectEditor and ChooseObjectDialog 2014-12-06 11:57:28 +01:00
Victor Levasseur
8a3a26e9c6 Global objects are now shown in bold 2014-12-06 10:51:15 +01:00
Florian Rival
7e714da230 Fixed typo 2014-12-01 21:25:30 +01:00
Florian Rival
388d62031e Added attributes to Events Groups for later use 2014-11-30 23:03:52 +01:00
Florian Rival
60a51931a1 Merge branch 'master' of github.com:4ian/GD 2014-11-30 17:08:00 +01:00
Florian Rival
40a82c61ea Switched from LGPL and zlib/png licenses to MIT License. 2014-11-30 16:59:51 +01:00
Florian Rival
bff5f45976 Merge pull request #58 from victorlevasseur/master
Improve installDeps.sh
2014-11-30 13:44:02 +01:00
Victor Levasseur
0f4ca89fa1 Add some comments in installDeps.sh 2014-11-30 10:07:30 +01:00
Victor Levasseur
66af8c2d6b Improve installDeps.sh 2014-11-29 20:52:50 +01:00
Florian Rival
1cb1befe7a Added comments and fixed tests not compiling (GroupEventDialog was not excluded from the bbuild) 2014-11-29 16:22:12 +01:00
Florian Rival
d517536baf Fixed Events Group rendering and added a checkbox to hide subevents (i.e: fold them) 2014-11-29 16:16:48 +01:00
Florian Rival
ad1d2b51fa Refactoring on events (Suppressed useless methods like copy-ctor) 2014-11-27 19:41:43 +01:00
Florian Rival
46784cee94 Merge branch 'master' of github.com:4ian/GD 2014-11-27 18:23:52 +01:00
Florian Rival
0ef3edccfe Added 'Group Events' 2014-11-27 18:23:38 +01:00
Florian Rival
8fed8e0ef9 Added a basic module to make analytics on how the software is used. 2014-11-26 15:56:05 +01:00
Florian Rival
502c04abaa Merge branch 'master' of https://github.com/4ian/GD 2014-11-24 23:39:45 +01:00
Florian Rival
0622a69aec Added support for external Javascript source files.
Added example of using external JS source files.
2014-11-24 23:39:06 +01:00
Florian Rival
f7f8401416 Merge pull request #57 from triptych/patch-1
fixing "LGPL" typo
2014-11-24 09:55:27 +01:00
Andrew Wooldridge
c0b3f9ef56 fixing "LGPL" typo 2014-11-24 00:35:40 -08:00
Florian Rival
e999f953b9 Ensure that all object parameters are properly syntax highlighted. 2014-11-23 22:01:31 +01:00
Florian Rival
8b3c862fee Fixed "Images Bank Editor" string not translated. 2014-11-23 18:29:37 +01:00
Florian Rival
b128446464 Refactoring in gd::TextFormatting and gd::InstructionSentenceFormatter 2014-11-23 17:14:30 +01:00
Florian Rival
21624b2d96 Added basics tests for gd::Project & gd::SourceFile 2014-11-23 16:02:35 +01:00
Florian Rival
506e3a3226 Refactored external sources files in gd::Project, and fixed their unserialization 2014-11-23 15:56:14 +01:00
Florian Rival
05624f84c7 Made two methods of gd::Project static 2014-11-21 21:36:44 +01:00
Florian Rival
de34b562ad Fixed French string hardcoded for some pane captions 2014-11-17 00:02:07 +01:00
Florian Rival
d54ae5d44a Adapted TextObjet extension declaration to be compatible with emscripten 2014-11-16 21:18:14 +01:00
Florian Rival
1c921efa4e Fixed typos in some method names 2014-11-16 16:19:19 +01:00
Florian Rival
3494048e5a Added example for Js code event. 2014-11-11 18:12:24 +01:00
Florian Rival
26bee9ab19 Finished JsCodeEvent and its dialog 2014-11-11 12:44:38 +01:00
Florian Rival
b5397c8f46 Added support for .json files with file dialogs 2014-11-11 10:42:18 +01:00
Florian Rival
b4201172ae Added GetIconFilename method to ObjectMetadata for consistency with AutomatismMetadata 2014-11-09 18:40:42 +01:00
Florian Rival
b59f39fec7 Fixed typo 2014-11-09 14:58:51 +01:00
Florian Rival
d89675d266 Merge pull request #52 from victorlevasseur/grid-improvement
Add offset option to the layout grid
2014-11-03 20:29:57 +01:00
Florian Rival
1d62312bb6 Ensure the instruction selector window has a minimum size which is not too small. 2014-11-02 23:44:49 +01:00
Florian Rival
282b64e5ae Fixed automatic selection of the instruction in the instruction selector, when editing an action or a condition 2014-11-02 22:54:18 +01:00
victorlevasseur
2829098fa7 Fix a missing header 2014-11-02 20:28:08 +01:00
Florian Rival
9f6d2f8e32 Merge pull request #51 from 4ian/refactoring-instruction-chooser
Instruction selector refactoring
2014-11-02 20:11:09 +01:00
Florian Rival
fb0841c824 Removed useless old wxSmith files 2014-11-02 20:08:52 +01:00
Florian Rival
80c298d21e Wording change 2014-11-02 20:07:31 +01:00
Florian Rival
0a2655ed14 Fixed wrong behavior: a new condition was inverted by default 2014-11-02 20:06:07 +01:00
Florian Rival
0873cb2139 Refactored condition and action window into a single instruction selection window, and removed an useless feature 2014-11-02 19:56:22 +01:00
victorlevasseur
2c4bcf69de Add offset to the layout grid 2014-11-02 19:22:35 +01:00
Florian Rival
0178d374c3 InstructionSentenceFormatter::LabelFromType now return only the name of the parameter (and not a complete sentence) 2014-11-02 16:54:40 +01:00
Florian Rival
8505da8729 Merge pull request #50 from victorlevasseur/actions_list_improvement
Actions/Conditions windows improvement
2014-11-02 16:46:32 +01:00
Florian Rival
c4cb2842f5 Merge pull request #49 from victorlevasseur/tilemapobject/dev
Add Undo/Redo and flood fill in TileMapObject
2014-11-02 16:09:21 +01:00
victorlevasseur
76bd2b12b3 Expand conditions' treeview to select the edited condition 2014-11-02 13:05:37 +01:00
Victor Levasseur
5a4a5f2070 Expand actions treeview on the current action when editing 2014-11-02 11:49:05 +01:00
victorlevasseur
50e7a9a97a Merge remote-tracking branch 'upstream/master' into tilemapobject/dev 2014-11-01 13:14:48 +01:00
victorlevasseur
6c354f4c57 Add the flood fill 2014-11-01 13:12:34 +01:00
victorlevasseur
f005a2d4b1 Improve the undo/redo system in TileMapObjectEditor 2014-10-31 19:32:38 +01:00
Victor Levasseur
03e3afced9 Can now undo/redo actions in TileMapObjectEditor 2014-10-31 11:16:41 +01:00
Florian Rival
ac71edf43f Removed now useless StrExpressionMetadata type definition. 2014-10-30 15:31:54 +01:00
Florian Rival
d2a706eca6 Merge branch 'master' of https://github.com/4ian/GD 2014-10-30 15:12:01 +01:00
Florian Rival
b7b83c0c44 Refactoring to remove useless class StrExpressionMetadata and duplicated code. 2014-10-30 15:11:20 +01:00
Florian Rival
7898451eca Added libGLEW.so.1.10 to the files to copy when a native game is exported 2014-10-28 12:10:48 +01:00
Florian Rival
9520fb093d Fix polygon vertices can't be properly edited by double clicking on it in tree 2014-10-26 16:08:31 +01:00
Florian Rival
b7e002b3ea Ensure versioned files of Release_Windows are copied to other targets directory when building IDE 2014-10-26 15:08:14 +01:00
Florian Rival
bc2cd7f0db Grammar fix 2014-10-22 17:15:13 +02:00
Florian Rival
e5aa88b71b Merge pull request #48 from victorlevasseur/tilemapobject/dev
Improvements for TileMapObject
2014-10-19 21:03:19 +02:00
Victor Levasseur
9dd603fbe4 Various fixes on the TileMapObject editor 2014-10-19 15:13:11 +02:00
Victor Levasseur
b479cc0aa1 Merge remote-tracking branch 'upstream/master' into tilemapobject/dev 2014-10-18 20:45:47 +02:00
Victor Levasseur
bbeeba23e3 The selected tile ID is now shown in the TileEditor
instead of being shown on the TileSetPanel
2014-10-18 20:40:49 +02:00
Victor Levasseur
581f2a49a1 Fix black tile bug in TileEditor 2014-10-18 19:02:34 +02:00
Florian Rival
f9bb82d17b Forgot a part of the last commit 2014-10-18 17:49:22 +02:00
Florian Rival
a28eef12a6 Updated installDeps.sh with latest wxWidgets version 2014-10-18 17:48:02 +02:00
Florian Rival
37aaf660f5 Link to wxWidgets 3.0.2 for Linux in documentation 2014-10-18 16:33:31 +02:00
Florian Rival
088b478b58 Allow CORS files loading for GDJS games 2014-10-18 16:30:32 +02:00
Victor Levasseur
c9544542b2 Fix a bug with empty tiles 2014-10-17 20:44:21 +02:00
Victor Levasseur
de1408fbb4 Changing tiles in the TileMapObject is more optimized 2014-10-16 16:08:41 +02:00
Florian Rival
0633e99dc1 Version bump 2014-10-15 14:47:51 +02:00
Florian Rival
c64838009c Added support for the action to open an URL in GDJS (with support for CocoonJS & Intel XDK) 2014-10-14 23:10:54 +02:00
Florian Rival
9f15f25e11 Added example to open a url in a browser 2014-10-14 23:02:32 +02:00
Florian Rival
c5e2a24178 Merge branch 'master' of github.com:4ian/GD 2014-10-14 00:28:13 +02:00
Florian Rival
3cbcdceb44 Refactored useless resources detection, and added tests for it 2014-10-14 00:27:53 +02:00
Florian Rival
e795bce063 Updated gd-updateinfo-*.xml files 2014-10-14 00:27:26 +02:00
Florian Rival
dbe77ee331 Merge pull request #39 from victorlevasseur/master
Tilemap collision and object editor fixes.
2014-10-11 15:03:01 +02:00
Victor Levasseur
882069c415 Fix "Add object" ribbon button opening edition window 2014-10-10 21:06:03 +02:00
Victor Levasseur
245a6c6ef8 Fix a bug when testing collision with invalid tiles 2014-10-10 20:56:10 +02:00
Florian Rival
f8717a531e Updated installation messages still refering to Game Develop instead of GDevelop.
ReleaseProcedure.bat now produce a zip file instead of a 7z file (not support by GitHub).
2014-10-09 16:33:57 +02:00
Florian Rival
2ad06306de Fixed platformer object slope max angle not loaded properly. 2014-10-09 15:04:54 +02:00
Florian Rival
4cf0701670 Updated French translations. 2014-10-09 12:34:06 +02:00
Florian Rival
2d81f045a0 Updated .pot file used to update translations files. 2014-10-09 00:13:12 +02:00
Florian Rival
52f7a41a1d Small change on the splashscreen (added small border).
Added framerate limit for an example.
2014-10-08 23:11:58 +02:00
Florian Rival
6eb53bb0db Fix new object badly renamed on wxGTK after being inserted in an ObjectsEditor. 2014-10-07 22:45:06 +02:00
Florian Rival
9dedce2436 Merge branch 'master' of github.com:4ian/GD 2014-10-07 21:32:25 +02:00
Florian Rival
6a0c7ea7bd Merge pull request #38 from victorlevasseur/master
Fix wrong help link for french translation
2014-10-07 21:25:47 +02:00
Victor Levasseur
93b7990981 Fix wrong help link for french translation 2014-10-07 21:08:41 +02:00
Florian Rival
e5be12ed31 Remove useless debug messages 2014-10-05 23:02:32 +02:00
Florian Rival
6b7dc61857 Fix bad filename for an image of an example 2014-10-05 15:59:24 +02:00
Florian Rival
5ccff94873 Fix keyboard shortcuts not working in events editor with wxGTK 2014-10-05 15:39:20 +02:00
Florian Rival
1c084c4e3b Added link to download Node.js if not installed in GDJS export dialog 2014-10-05 15:00:03 +02:00
Florian Rival
c2ba3f9574 Updated UglifyJS to fix minification sometimes breaking Box2d asm.js code 2014-10-05 14:13:46 +02:00
Florian Rival
dfd3906298 Prefer using 'nodejs' instead of 'node' executable on Linux 2014-10-05 13:20:37 +02:00
Florian Rival
5c317da7df Try to find Node.js using also 'nodejs' as executable name on Linux 2014-10-05 13:19:02 +02:00
Florian Rival
25b9a12269 Fix folder opening in a file explorer on Linux and Mac 2014-10-05 13:16:57 +02:00
Florian Rival
e73c9a3c72 Fix functions not working with multiple scenes or with external events.
For the first issue, functions do not expose anymore a global variable.
For the second issue, functions are mangled with scene name and the search
for a function is now following links.
2014-10-05 12:49:58 +02:00
Florian Rival
6bb34ee7f4 Added script to launch GDevelop IDE 2014-10-04 15:26:06 +02:00
Florian Rival
6d5dbc0793 Version bump 2014-10-03 20:00:48 +02:00
Florian Rival
968c9be82f Merge branch 'master' of github.com:4ian/GD 2014-10-03 19:35:37 +02:00
Florian Rival
efd630b18a Avoid making autosave when the file can't be written 2014-10-03 19:35:12 +02:00
Florian Rival
fc7d0179e7 Merge pull request #34 from victorlevasseur/gdcpp-dialogs-wxcrafter
LayersEditorPanel generated by wxCrafter
2014-10-03 19:13:08 +02:00
Victor Levasseur
556b830e35 Toolbars don't undock anymore 2014-10-03 18:59:19 +02:00
Florian Rival
df147d1451 Fix error in an icon filename and AdvancedXML include files path 2014-10-03 18:24:14 +02:00
Victor Levasseur
46d9df4b4d Fix some toolbar glitches 2014-10-03 16:29:49 +02:00
Florian Rival
6d2bbea19e Removed deprecated bitmap from CommonBitmapManager 2014-10-03 13:13:32 +02:00
victorlevasseur
a4edeb56cd Fix CMakeLists.txt (2) 2014-10-03 12:24:50 +02:00
victorlevasseur
e8d72c7ef5 LayersEditorPanel not built when NO_GUI is defined 2014-10-03 12:16:14 +02:00
victorlevasseur
41a435c804 Fix GDCore CMakeLists.txt 2014-10-03 12:07:17 +02:00
victorlevasseur
68c7c0cc94 LayerEditorPanel is now generated by wxCrafter 2014-10-03 11:44:16 +02:00
Florian Rival
175f9a19d7 Add new tests for ArbitraryResourceWorker 2014-10-02 14:02:10 +02:00
Florian Rival
2a13e03555 Added small test for GDCpp 2014-09-30 22:42:38 +02:00
Florian Rival
4d3fcc12f5 Merge pull request #32 from victorlevasseur/gdcpp-dialogs-wxcrafter
wxCrafter now generates DebuggerGUI (fix toolbar bug on GTK+)
2014-09-30 22:10:37 +02:00
Florian Rival
23163829b6 Fix compatibilty with old projects (2) 2014-09-28 23:32:00 +02:00
Victor Levasseur
70ef5c66b6 CMakeLists.txt fixed 2014-09-28 13:20:12 +02:00
Florian Rival
7b2256be88 Merge pull request #33 from victorlevasseur/master
Fix polygons point not moving in SpriteObjectEditor.
2014-09-28 13:15:12 +02:00
Victor Levasseur
58d825c86e Remove an useless condition test. 2014-09-28 12:58:56 +02:00
Victor Levasseur
7704bbb788 Fix polygons point not moving in SpriteObjectEdition 2014-09-28 10:26:01 +02:00
victorlevasseur
9506ffaac8 Fix CMakeLists (NO_GUI) 2014-09-27 19:53:32 +02:00
victorlevasseur
e66ecbfba6 Remove the old DebuggerGUI 2014-09-27 19:13:18 +02:00
victorlevasseur
44bdd26e83 Fix a compilation error 2014-09-27 18:53:51 +02:00
victorlevasseur
ed912c1e65 Some fixes 2014-09-27 18:49:19 +02:00
victorlevasseur
46a8090fc2 DebuggerGUI now generated by wxCrafter 2014-09-27 14:20:37 +02:00
Florian Rival
e19fed0760 Merge pull request #30 from victorlevasseur/master
Fix debugger and profiler graphical bug
2014-09-26 23:34:41 +02:00
victorlevasseur
d271734aa2 Fix debugger and profiler graphical bug 2014-09-26 23:10:23 +02:00
Florian Rival
8f2e271639 Merge pull request #29 from 4ian/gdevelop-name-change
Name changed to "GDevelop"
2014-09-26 01:25:54 +02:00
Florian Rival
bb4dd02f90 Updated docs, added linux script for generating docs 2014-09-25 17:48:41 +02:00
Florian Rival
e0189ea305 Updated images with new logo, removed useless images 2014-09-25 15:26:48 +02:00
Florian Rival
6a2f1cc35b Add test for VersionWrapper 2014-09-24 17:47:12 +02:00
Florian Rival
a3d1406dd4 Fix compatibility with old projects 2014-09-24 17:12:40 +02:00
Florian Rival
7d3ada265c Replaced "Game Develop" by "GDevelop" 2014-09-24 16:25:13 +02:00
Florian Rival
e506fc64dc Merge branch 'master' of github.com:4ian/GD 2014-09-24 13:37:14 +02:00
Florian Rival
ceb67ed7a4 .gitignored more files 2014-09-24 13:37:00 +02:00
Florian Rival
6d5e701c3e Merge pull request #28 from victorlevasseur/tilemapobject/master
Add support for custom hitboxes for tiles in the TileMap object.
2014-09-24 13:29:37 +02:00
victorlevasseur
ecd8528b77 Merge branch 'master' into tilemapobject/dev 2014-09-23 22:32:19 +02:00
victorlevasseur
0b02882639 Update TileMapObject translation 2014-09-23 22:29:43 +02:00
victorlevasseur
d23651fd8c Can edit Tile hitbox's vertices coords 2014-09-22 23:56:19 +02:00
victorlevasseur
1b5e90d14b Can now add/remove a vertice from a tile hitbox 2014-09-22 23:33:34 +02:00
victorlevasseur
907d584ece Add hitbox edition in the TileEditor 2014-09-21 23:04:58 +02:00
Florian Rival
10094b1912 Fix MoveTo in PathfindingAutomatism when called on a newly created object 2014-09-21 22:29:22 +02:00
Florian Rival
f17e07d4aa Fix crash with PathfindingAutomatism when calling MoveTo just after object creation 2014-09-21 22:18:37 +02:00
victorlevasseur
610995af15 Merge branch 'master' into tilemapobject/dev 2014-09-21 22:09:03 +02:00
Florian Rival
6ff3b2d7ec Activated GDCpp tests for Travis-CI 2014-09-21 21:14:54 +02:00
Florian Rival
bdfacae401 Merge branch 'master' of github.com:4ian/GD 2014-09-21 21:00:22 +02:00
Florian Rival
7857065c51 Merge pull request #25 from victorlevasseur/polygon-edition-helper
Added PolygonEditionHelper to make polygon edition easier and adaptable to other object editors.
2014-09-21 21:00:09 +02:00
Florian Rival
85042a408a Merge pull request #27 from victorlevasseur/joystick-dialog-fix
Fix the axis list in the Joystick selection dialog
2014-09-21 19:39:20 +02:00
victorlevasseur
d1c90b59fb Fix the axis list in the Joystick selection dialog 2014-09-21 11:36:48 +02:00
Florian Rival
0819a2212c Added basics tests for GDCpp
RuntimeScene can be used without window (renderWindow == NULL).
2014-09-20 20:59:17 +02:00
victorlevasseur
73647d9558 Add documentation to PolygonEditionHelper 2014-09-20 11:06:59 +02:00
victorlevasseur
976ab28a11 Fix polygon include in PolygonEditionHelper 2014-09-19 12:10:10 +02:00
victorlevasseur
c43bfca3d4 Merge branch 'master' into polygon-edition-helper 2014-09-19 12:10:00 +02:00
victorlevasseur
74d0144af9 Merge branch 'master' into polygon-edition-helper 2014-09-19 12:03:58 +02:00
Florian Rival
890ba762a3 Merge pull request #24 from victorlevasseur/tilemapobject/master
Fix bug with mono-bitmaps in TileMapObject
2014-09-19 11:01:38 +02:00
victorlevasseur
f136230b8e Merge branch 'tilemapobject/master' into tilemapobject/dev 2014-09-19 10:23:47 +02:00
victorlevasseur
ef3612217b Fix a bug with mono-bitmaps in TileMapObject 2014-09-19 10:21:08 +02:00
Florian Rival
bbd7cd4f0b Renamed Polygon files to Polygon2d 2014-09-17 18:31:04 +02:00
Florian Rival
5ec5d72198 Fix includes files for TileMap object 2014-09-17 18:11:03 +02:00
victorlevasseur
577d9da3c6 Make some adjustments in the PolygonEditionHelper 2014-09-16 23:50:39 +02:00
Florian Rival
5220563b68 Added .eslintrc and minor lint fixes 2014-09-16 17:05:23 +02:00
victorlevasseur
33f57a75b0 Can now change the selected polygon/point from the editor 2014-09-16 09:25:28 +02:00
victorlevasseur
392eb7d054 Merge branch 'master' into tilemapobject/dev 2014-09-16 00:27:53 +02:00
victorlevasseur
7c829f59b0 Merge branch 'master' into polygon-edition-helper 2014-09-16 00:27:11 +02:00
victorlevasseur
92d4753248 Add the base of the PolygonEditionHelper
This provides a generic way to edit list of mask polygons.
2014-09-16 00:05:04 +02:00
Florian Rival
8f4e66ff01 Add "Advanced Shape based Painter" example 2014-09-15 19:19:54 +02:00
Florian Rival
2b8ce73ae2 Minor changes in TileMap extension 2014-09-15 18:58:08 +02:00
Florian Rival
8f8acbf891 Merge branch 'master' of github.com:4ian/GD 2014-09-15 17:46:02 +02:00
Florian Rival
ed40ce0f8f Ensure apt-get update is run by Travis-ci 2014-09-14 21:16:53 +02:00
Florian Rival
60be93898f Clarified licenses for games created with GD 2014-09-14 21:04:59 +02:00
victorlevasseur
23546219a8 Add offset into the TileEditor 2014-09-13 12:43:20 +02:00
Florian Rival
5694a2c343 Merge pull request #15 from victorlevasseur/tilemapobject/master
Add TileMap Object
2014-09-13 00:52:02 +02:00
Florian Rival
c3ea7df661 Merge branch 'master' of github.com:4ian/GD 2014-09-09 22:17:50 +02:00
victorlevasseur
0208d4de39 Add a toolbar to edit the collision mask 2014-09-08 09:35:27 +02:00
victorlevasseur
f1fa61dfbb Update the french translation of the TileMapObject 2014-09-07 17:55:38 +02:00
victorlevasseur
3870313cfb Add an action to change the tileset texture 2014-09-07 17:33:09 +02:00
victorlevasseur
efabfe6dd8 Add a basic level editor example (using TileMapObject)
Fix a bug with tilemap loading at runtime
2014-09-07 16:48:02 +02:00
victorlevasseur
bda12432d6 Add an action and an expression to save/load the tilemap 2014-09-07 16:13:57 +02:00
victorlevasseur
6137d24930 Change the way the tilemap is serialized 2014-09-07 14:59:30 +02:00
victorlevasseur
29a53bec6c Fix a bug with regenerating the tilemap object 2014-09-06 11:58:15 +02:00
Victor Levasseur
e6ad1beb39 Add actions and expressions for tile edition 2014-09-06 11:30:05 +02:00
Victor Levasseur
0cf6e8e47a Show the selected tile id in TileSetPanel 2014-09-06 10:48:03 +02:00
Victor Levasseur
7c4af2b6bb Remove some useless code 2014-09-05 23:28:44 +02:00
Victor Levasseur
581660a84b Add expressions to get the map width and height 2014-09-05 23:16:10 +02:00
Victor Levasseur
9c4ca6a2a1 Separate declarations into different files 2014-09-05 19:09:49 +02:00
Victor Levasseur
34c0e41d54 Added expressions for tile size 2014-09-05 16:55:12 +02:00
victorlevasseur
79742f4d26 Add fill and clear layer features 2014-09-05 11:41:10 +02:00
victorlevasseur
b09bfe9816 Add a new insertion mode (can now insert tiles in a rectangle) 2014-09-04 18:54:40 +02:00
victorlevasseur
b0e02ca6a6 Add help buttons on TileSet/MapConfig dialogs 2014-09-03 12:53:53 +02:00
victorlevasseur
0d4ea49b55 Merge branch 'tilemapobject/master' into tilemapobject/dev 2014-09-03 12:29:39 +02:00
victorlevasseur
a0af4086d9 Add/Update license text 2014-09-02 22:07:48 +02:00
Victor Levasseur
b3ddb009b2 Improve toolbars positioning in the TileMapObject's editors 2014-09-02 11:56:47 +02:00
Victor Levasseur
1b87865198 Add a confirmation msgbox before closing the editor 2014-09-02 11:52:49 +02:00
Victor Levasseur
dbe11e35a6 Forgot to commit a file 2014-09-02 11:42:39 +02:00
Victor Levasseur
0f278d6a9e Improve TileSetPanel 2014-09-02 11:38:10 +02:00
Victor Levasseur
deb9634a12 Improve the TileMapPanel 2014-09-02 11:27:46 +02:00
Victor Levasseur
367092a27e Fix a problem with invalid tilesets inside TileSetPanel 2014-09-02 11:09:35 +02:00
Victor Levasseur
b32db58d11 Fix the same bug for non-integer coordinates 2014-09-01 20:19:29 +02:00
victorlevasseur
bb20528977 Fix blank lines between tiles in preview 2014-09-01 20:07:45 +02:00
Victor Levasseur
e9bfc1f55c Optimize rendering in TileSetPanel
Add a label to the tileset preview (in TileSetConfig.)
2014-09-01 17:19:49 +02:00
Victor Levasseur
9b65830d05 Merge branch 'tilemapobject/master' into tilemapobject/dev 2014-09-01 15:52:08 +02:00
Victor Levasseur
f178a65867 Add a TileSetPanel in the TileSetConfig. to preview the the parameters 2014-09-01 15:33:32 +02:00
victorlevasseur
181bdf92b2 Add a help button in TileMapObjectEditor 2014-09-01 10:56:23 +02:00
victorlevasseur
084a5000e1 Add single tile collision condition 2014-08-31 20:13:40 +02:00
Florian Rival
b91374dc1a Updated debian packager version number and removed useless comment 2014-08-31 18:38:07 +02:00
victorlevasseur
ed0c4660f5 Merge branch 'master' into tilemapobject/dev 2014-08-31 17:41:49 +02:00
victorlevasseur
09de2c989f Merge branch 'tilemapobject/master' into tilemapobject/dev 2014-08-31 17:41:38 +02:00
Florian Rival
2be6ccc331 Merge pull request #14 from victorlevasseur/master
ListsTestFuncExtraParameter (more flexibility for test functors)
2014-08-31 17:02:54 +02:00
victorlevasseur
ad5d7d2ea3 Add an example for the TileMapObject : Simple Platformer 2014-08-31 12:27:09 +02:00
victorlevasseur
16d4276184 Optimize TileMap drawing in the TileMapPane (editor) 2014-08-31 11:48:40 +02:00
victorlevasseur
01021d0ee3 Merge remote-tracking branch 'upstream/master' 2014-08-30 19:11:04 +02:00
victorlevasseur
9fc8f7e142 Rename MovesTowardExtraParameter to ToleranceExtraParameter 2014-08-30 19:09:38 +02:00
victorlevasseur
b7f9fe1db0 Add an extra parameters container for TwoObjectListsTest 2014-08-30 19:06:50 +02:00
victorlevasseur
413497d138 Add single tile collision condition 2014-08-30 17:49:17 +02:00
victorlevasseur
2e6f58cf33 Add condition to test width and height of the TileMapObject 2014-08-30 17:45:15 +02:00
victorlevasseur
99d3b6ad39 Add french translation 2014-08-29 23:05:43 +02:00
victorlevasseur
36210ad4ee Add a small help for the Tilemap edition 2014-08-29 22:39:00 +02:00
victorlevasseur
2062efff00 Add documentation to TileSet.h file 2014-08-29 21:23:35 +02:00
victorlevasseur
789bed9c95 Add predefined hitboxes selectable from the tile editor 2014-08-29 18:43:54 +02:00
Florian Rival
b797ce7973 Default platformer object slope maximum angle is now 60°. 2014-08-27 21:11:05 +02:00
Florian Rival
2c08f8cd74 XML update files updated for the latest version. 2014-08-27 21:09:58 +02:00
victorlevasseur
037d62e013 Fix toolbar buttons opening wrong dialogs 2014-08-27 18:52:41 +02:00
victorlevasseur
970a9a85ec Add hitbox load and save 2014-08-27 17:53:26 +02:00
victorlevasseur
2fe492c463 Merge branch 'master' into tilemap-object 2014-08-27 13:45:08 +02:00
victorlevasseur
3f7c74dbf8 Added proxy classes for TileMap and TileSet. 2014-08-27 12:48:37 +02:00
victorlevasseur
af56bfc5ae Add collision mask generation (can now collides) 2014-08-26 23:35:44 +02:00
victorlevasseur
d266635116 Add Tile hitbox (still need customization) 2014-08-26 20:18:19 +02:00
victorlevasseur
23c9e44a58 Added tools buttons to edit the collision mask 2014-08-26 10:04:30 +02:00
Florian Rival
131d1fe224 Fix layers not properly hidden in HTML5 games.
Started implementing unit tests for GDJS.
2014-08-25 21:03:59 +02:00
victorlevasseur
11030317b7 Add TileEditor to show the current tile
This editor will be used for collision mask edition
2014-08-25 20:47:11 +02:00
victorlevasseur
aa5967ddbd Merge branch 'tilemap-object' of https://github.com/victorlevasseur/GD into tilemap-object 2014-08-24 20:25:20 +02:00
Florian Rival
3206263c53 Made SpriteObject::GetAngle() more robust if no animation is present. 2014-08-24 18:30:26 +02:00
Florian Rival
788b965000 Fix Breakout example. 2014-08-24 18:29:54 +02:00
Florian Rival
ef5665a66f Updated Russian translation (thanks to Komencanto). 2014-08-24 18:20:32 +02:00
Florian Rival
c32e5d7e49 Fix bad working directory for games on Windows using gdb.
Translation update.
Version bump.
Fix ReleaseProcedure.bat script.
2014-08-24 18:10:42 +02:00
Victor Levasseur
9bf977499a Realize the resource editor toolbar in the Tileset config 2014-08-24 18:08:12 +02:00
victorlevasseur
288fd2634a The tileset config opens automatically for a new object
Reduce toolbar icon size
2014-08-24 11:21:16 +02:00
victorlevasseur
7847bc3d01 Forgot to commit some files 2014-08-24 11:03:37 +02:00
victorlevasseur
3c44398e4b Separate the tilemap size config into a new window
Add a toolbar in the editor main panel
2014-08-23 20:32:34 +02:00
victorlevasseur
2ab3cb8d05 Separate the tileset configuration into a window
Moved the wxCrafter project into the same folder as the extension
2014-08-23 10:46:28 +02:00
victorlevasseur
e5c8908f8b Rename the wxCrafter project to TileMapDialogs.wxcp 2014-08-22 18:07:27 +02:00
victorlevasseur
ab1793626b Fix a bug with tilemap positioning in runtime 2014-08-22 11:55:06 +02:00
victorlevasseur
2b6a51d052 The tilemap editor now loads the tile size, spacing 2014-08-22 11:49:25 +02:00
victorlevasseur
20992044d1 Add serialization to the tilemap object. 2014-08-22 11:30:37 +02:00
victorlevasseur
a3f227025b Make some changes to events handler in TileMapPanel 2014-08-21 21:37:26 +02:00
victorlevasseur
a14694e5eb Add the possibility to draw when moving the mouse with the button pressed 2014-08-21 19:19:26 +02:00
victorlevasseur
537fad69e2 Merge branch 'master' into tilemap-object 2014-08-21 13:22:52 +02:00
victorlevasseur
ca81d61579 Add the beginning of the tilemap object
Add an icon for the object
2014-08-21 13:18:41 +02:00
victorlevasseur
8a49b88006 Add dockable window to the editor 2014-08-20 11:30:27 +02:00
Florian Rival
e6427fe729 Updated scripts for linux packaging 2014-08-19 23:03:25 +02:00
victorlevasseur
85ba705d9c Merge branch 'master' into tilemap-object 2014-08-19 22:27:44 +02:00
Florian Rival
a90610ce57 Enhanced linux script 2014-08-19 21:57:27 +02:00
Florian Rival
f11dd10109 Minor changes 2014-08-19 21:32:36 +02:00
Florian Rival
962cc6c1ca fix tests 2014-08-19 21:17:38 +02:00
Florian Rival
cc019b4545 Normalize resources filenames (convert \ to /) to avoid portability issues from Windows to Linux for projects 2014-08-19 20:46:37 +02:00
victorlevasseur
5f6f7fdb8d Fix a bug with buffering 2014-08-19 17:22:21 +02:00
victorlevasseur
1fc985bec1 Add buffering to the tilemap editor. 2014-08-19 13:56:09 +02:00
victorlevasseur
77517fb623 Merge branch 'master' into tilemap-object 2014-08-19 11:57:38 +02:00
victorlevasseur
6de031c4cf Fix a bug with not loaded tilesets. 2014-08-19 11:49:20 +02:00
Florian Rival
9582d79ee0 script copying lib for linux now also copy wxWidgets lib 2014-08-19 00:19:31 +02:00
Florian Rival
93de1b8300 Removed useless class 2014-08-19 00:04:48 +02:00
Florian Rival
c9509f6264 add linux script file for the IDE and games 2014-08-19 00:00:09 +02:00
Florian Rival
7c79ae1634 Resources files now always use a slash in their filename 2014-08-17 19:29:32 +02:00
Florian Rival
0f868448a2 Forgot to commit a file 2014-08-16 14:07:07 +02:00
Florian Rival
39236ee000 Added window border in scene editor, updated scripts and fix a file dialog on Linux 2014-08-16 13:49:54 +02:00
victorlevasseur
070e85deaa Added TileSet class containing data about the tileset. 2014-08-15 22:24:18 +02:00
Florian Rival
339b0ba327 Fix scene not properly rendered in scene editor on Linux 2014-08-15 15:11:48 +02:00
Florian Rival
e5b8a5f65f Added Russian to Windows installer. 2014-08-15 01:16:31 +02:00
Florian Rival
c7fe0575c4 Merge branch 'master' of https://github.com/4ian/GD 2014-08-15 01:14:41 +02:00
Florian Rival
77ba59143b Merge pull request #9 from victorlevasseur/master
Fixed a bug with stop listening action.
2014-08-15 00:38:44 +02:00
Florian Rival
fc46940449 Added Russian translation: Thanks to Airvikar from ubuntu-wine.ru 2014-08-15 00:22:14 +02:00
victorlevasseur
0d0874fb5d Fixed a bug with stop listening action. 2014-08-14 23:52:39 +02:00
victorlevasseur
fdfb8ab52c Separated TileMap (contains data) from TileMapPanel (GUI). 2014-08-14 23:35:52 +02:00
Florian Rival
7eb4c26c53 Updated Windows scripts integrated to the build process.
Fix forces in GDJS.
2014-08-14 21:45:55 +02:00
Florian Rival
1236bbac25 Merge branch 'master' of https://github.com/4ian/GD
Conflicts:
	Core/GDCore/Events/EventsList.h
2014-08-13 23:25:50 +02:00
Florian Rival
300b9bf3e4 Merge branch 'master' of github.com:4ian/GD 2014-08-13 23:01:54 +02:00
Florian Rival
63c21f7877 Integrated scripts into the build process, no need to call them manually (Still need testing on Windows) 2014-08-13 23:01:39 +02:00
Florian Rival
4761d581f2 Updated Readme 2014-08-13 19:48:13 +02:00
victorlevasseur
c14b45c31e Added layer moving, layer hiding. 2014-08-13 18:25:09 +02:00
Florian Rival
ae9e129f03 Merge pull request #8 from victorlevasseur/master
Fixed compilation/linkage error with GetProcessMemoryInfo
2014-08-13 13:52:13 +02:00
victorlevasseur
e330c4499f First part of the multiple layer support. 2014-08-13 12:55:35 +02:00
victorlevasseur
fb4c265fea Can now insert tiles into the map. 2014-08-13 12:55:34 +02:00
victorlevasseur
4e32cc3775 Added the beginning of the TileMapObject extension. 2014-08-13 12:55:33 +02:00
victorlevasseur
da8636af5a Fixed compilation/linkage error with GetProcessMemoryInfo 2014-08-13 12:50:43 +02:00
Florian Rival
0d5d555b91 Made some scripts more robusts 2014-08-12 22:58:10 +02:00
Florian Rival
5749073d55 Merge pull request #6 from 4ian/tests
Added basic unit tests for GDCore
2014-08-12 22:35:37 +02:00
Florian Rival
fb25ae6295 Fixed memory leak with EventsList and added test for it 2014-08-12 22:22:00 +02:00
Florian Rival
ac8258b3f8 Organized tests and add a memory consumption test for EventsList 2014-08-11 19:31:51 +02:00
Florian Rival
b476c97e21 Fix travis.yml and added clang build 2014-08-10 23:55:03 +02:00
Florian Rival
c17112009a Fix and enhanced tests 2014-08-10 23:45:35 +02:00
Florian Rival
c82e9810ad Install and compile SFML for travis tests. 2014-08-10 23:05:54 +02:00
Florian Rival
b26d29e86f 7za was not installed by the travis script. 2014-08-10 22:39:01 +02:00
Florian Rival
cef5285f85 Modified travis script. 2014-08-10 22:33:23 +02:00
Florian Rival
f6216da3ed Work in progress for tests.
Events Clone method now return a raw pointer.
2014-08-10 22:24:06 +02:00
Florian Rival
4d8f53f3b1 Merge pull request #5 from victorlevasseur/master
Add force clearing for GDJS
2014-08-08 23:51:58 +02:00
Florian Rival
a5408d21fd Fixed typos, removed useless debug messages. 2014-08-08 22:58:21 +02:00
victorlevasseur
62c14d2ba9 Fix error in runtimeobject.js. 2014-08-08 16:59:37 +02:00
victorlevasseur
6f5fc77570 Fix some syntax errors. 2014-08-08 10:52:46 +02:00
victorlevasseur
3372812e2e Merge branch 'master' of https://github.com/victorlevasseur/GD 2014-08-08 10:49:32 +02:00
victorlevasseur
ef9f2e7a52 Added force clearing in GDJS.
(replace temporary or permanent forces)
2014-08-08 10:48:36 +02:00
Florian Rival
cbeed0b414 Add script to download and build dependencies for Ubuntu 2014-08-06 23:15:45 +02:00
Florian Rival
4136adefab Fix script when directories aren't created 2014-08-06 23:13:32 +02:00
Florian Rival
8cdbb4a166 Fixed SetGravity action.
Version bump.
2014-08-04 21:14:41 +02:00
Florian Rival
442d6e3efe Merge branch 'master' of https://github.com/4ian/GD 2014-08-03 16:00:18 +02:00
Florian Rival
046d994104 Fix ReadFile in NativeFileSystem.
Add documentation.
2014-08-03 15:55:41 +02:00
Florian Rival
94b67abda7 Merge pull request #4 from victorlevasseur/master
Fixed a compilation error with SetFullscreen.
2014-08-03 15:51:31 +02:00
victorlevasseur
15ee1db908 Fixed a compilation error with SetFullscreen. 2014-08-03 15:20:09 +02:00
Florian Rival
ef80be1ded Second attempt. 2014-07-30 22:17:08 +02:00
Florian Rival
a3e56eea49 First attempt to use travis CI. 2014-07-30 22:11:29 +02:00
Florian Rival
1b634032a7 First experiment to make unit tests with Catch library. 2014-07-29 22:55:38 +02:00
1219 changed files with 125378 additions and 86417 deletions

22
.eslintrc Normal file
View 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
View File

@@ -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
View 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

View 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

View 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;

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

View File

@@ -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.&#x0A;Use 0-5 to select a tile to add (not from the numpad)&#x0A;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&#x0A;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&apos;indicateur de tuile (qui montre la tuile que l&apos;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&apos;objet.&#x0A;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.&#x0A;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&#x0A;Similaire <20> l&apos;<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.&#x0A;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>

View File

@@ -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" />

File diff suppressed because it is too large Load Diff

View File

@@ -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&lt;objects.length;++i) {&#x0A;&#x09;objects[i].setAngle(Math.cos(runtimeScene.getTimeFromStart()/100)*90);&#x0A;}</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];&#x0A;if (!pea) {&#x0A;&#x09;return;&#x0A;}&#x0A;window.alert(&quot;You clicked on Pea at position &quot;+&#x0A;&#x09;pea.getX()+&quot;;&quot;+pea.getY()+&quot; !&quot;);</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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -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>

View File

@@ -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()+"!");
}

View File

@@ -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);
}
}

File diff suppressed because it is too large Load Diff

View 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>&quot;http://www.compilgames.net&quot;</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>

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 654 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

View File

@@ -1,6 +1,6 @@
language: node_js
before_install: "npm install -g npm"
node_js:
- "0.4"
- "0.8"
- "0.10"
- "0.11"

View File

@@ -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
-------------

View 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(",") + ")";

View File

@@ -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);

View File

@@ -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)
};
};
})();

View File

@@ -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){

View File

@@ -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) {

View File

@@ -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",

View File

File diff suppressed because one or more lines are too long

View 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"
}

View File

@@ -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"
}

View File

View 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

View File

@@ -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);
}

View File

@@ -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;
}
});
});

View File

@@ -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"
}

View 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();
}

View File

@@ -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) {

View File

@@ -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

View File

@@ -1,3 +1,3 @@
language: node_js
node_js:
language: node_js
node_js:
- "0.10"

View File

@@ -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.

View File

@@ -1,15 +1,15 @@
# uglify-to-browserify
A transform to make UglifyJS work in browserify.
[![Build Status](https://travis-ci.org/ForbesLindesay/uglify-to-browserify.png?branch=master)](https://travis-ci.org/ForbesLindesay/uglify-to-browserify)
[![Dependency Status](https://gemnasium.com/ForbesLindesay/uglify-to-browserify.png)](https://gemnasium.com/ForbesLindesay/uglify-to-browserify)
[![NPM version](https://badge.fury.io/js/uglify-to-browserify.png)](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.
[![Build Status](https://travis-ci.org/ForbesLindesay/uglify-to-browserify.png?branch=master)](https://travis-ci.org/ForbesLindesay/uglify-to-browserify)
[![Dependency Status](https://gemnasium.com/ForbesLindesay/uglify-to-browserify.png)](https://gemnasium.com/ForbesLindesay/uglify-to-browserify)
[![NPM version](https://badge.fury.io/js/uglify-to-browserify.png)](http://badge.fury.io/js/uglify-to-browserify)
## Installation
npm install uglify-to-browserify
## License
MIT

View File

@@ -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;
}

View File

@@ -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"
}

View File

@@ -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'))

File diff suppressed because one or more lines are too long

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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");
};

View 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() {

View File

@@ -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 + ""

View File

@@ -0,0 +1 @@
ru_RU

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -1,3 +1,3 @@
Game Develop JS platform
GDevelop JS platform
Enhanced tutorial
An improved version of tutorial available on www.wiki.compilgames.net

View File

@@ -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.

View File

@@ -1,3 +1,3 @@
Game Develop C++ platform
GDevelop C++ platform
Shoot'em up
Template showing how to make a shoot'em up game

View File

@@ -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

View File

@@ -1,3 +1,3 @@
Game Develop JS platform
GDevelop JS platform
Platformer
Platformer game with enemies, moving platforms and coins.

View File

@@ -1,3 +1,3 @@
Game Develop JS platform
GDevelop JS platform
Web Shoot 'em up
A side-scrolling shoot-'em-up game

View File

@@ -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.

File diff suppressed because it is too large Load Diff

View 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."

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 611 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 991 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 B

Some files were not shown because too many files have changed in this diff Show More