From 04b72a2cf82516293be9f24f738508168b628dd5 Mon Sep 17 00:00:00 2001 From: Michael Barrett Date: Wed, 11 Jan 2017 09:19:18 -0500 Subject: [PATCH 1/3] Support GMS2 doc style in script comments This will allow GMS2 autocomplete to display the parameter information for gdash scripts --- src/gms2/gdash/gdash.yyp | 1618 +++++++++++++++++ .../compatibility_report_110117_90219219.txt | 82 + .../compatibility_report_110117_90219219.yy | 6 + src/gms2/gdash/notes/notes.txt | Bin 0 -> 9 bytes src/gms2/gdash/notes/notes.yy | 6 + .../objects/obj_gdash_test_1/Create_0.gml | 10 + .../objects/obj_gdash_test_1/Other_10.gml | 9 + .../objects/obj_gdash_test_1/Other_11.gml | 29 + .../objects/obj_gdash_test_1/Other_12.gml | 22 + .../objects/obj_gdash_test_1/Other_13.gml | 53 + .../objects/obj_gdash_test_1/Other_14.gml | 14 + .../objects/obj_gdash_test_1/Other_15.gml | 54 + .../objects/obj_gdash_test_1/Other_16.gml | 10 + .../objects/obj_gdash_test_1/Other_17.gml | 12 + .../objects/obj_gdash_test_1/Other_18.gml | 10 + .../objects/obj_gdash_test_1/Other_19.gml | 18 + .../objects/obj_gdash_test_1/Other_20.gml | 18 + .../objects/obj_gdash_test_1/Other_21.gml | 18 + .../objects/obj_gdash_test_1/Other_22.gml | 11 + .../objects/obj_gdash_test_1/Other_23.gml | 12 + .../objects/obj_gdash_test_1/Other_24.gml | 13 + .../obj_gdash_test_1/obj_gdash_test_1.yy | 188 ++ src/gms2/gdash/options/linux/options_linux.yy | 28 + src/gms2/gdash/options/mac/icon512.png | Bin 0 -> 31974 bytes src/gms2/gdash/options/mac/icons/icon512.png | Bin 0 -> 19569 bytes src/gms2/gdash/options/mac/options_mac.yy | 34 + src/gms2/gdash/options/mac/splash.png | Bin 0 -> 51479 bytes src/gms2/gdash/options/mac/splash/splash.png | Bin 0 -> 51479 bytes .../main/inherited/options_main.inherited.yy | 7 + src/gms2/gdash/options/windows/License.txt | 42 + .../gdash/options/windows/RunnerInstaller.nsi | 213 +++ .../gdash/options/windows/Runner_Icon_256.ico | Bin 0 -> 7916 bytes .../gdash/options/windows/Runner_finish.bmp | Bin 0 -> 154544 bytes .../gdash/options/windows/Runner_header.bmp | Bin 0 -> 25820 bytes .../options/windows/installer/license.txt | 42 + .../windows/installer/runnerinstaller.nsi | 213 +++ .../gdash/options/windows/options_windows.yy | 37 + .../gdash/options/windows/runner_icon.ico | Bin 0 -> 3774 bytes src/gms2/gdash/options/windows/splash.png | Bin 0 -> 42183 bytes src/gms2/gdash/rooms/room0/room0.yy | 289 +++ .../@instance_create/instance_create.gml | 6 + .../@instance_create/instance_create.yy | 8 + .../@object_get_depth/object_get_depth.gml | 10 + .../@object_get_depth/object_get_depth.yy | 8 + src/gms2/gdash/scripts/__add/__add.gml | 1 + src/gms2/gdash/scripts/__add/__add.yy | 8 + src/gms2/gdash/scripts/__double/__double.gml | 1 + src/gms2/gdash/scripts/__double/__double.yy | 8 + .../__global_object_depths.gml | 21 + .../__global_object_depths.yy | 8 + .../__greaterThanThree/__greaterThanThree.gml | 1 + .../__greaterThanThree/__greaterThanThree.yy | 8 + src/gms2/gdash/scripts/__isEven/__isEven.gml | 1 + src/gms2/gdash/scripts/__isEven/__isEven.yy | 8 + src/gms2/gdash/scripts/__sum/__sum.gml | 8 + src/gms2/gdash/scripts/__sum/__sum.yy | 8 + src/gms2/gdash/scripts/_and/_and.gml | 15 + src/gms2/gdash/scripts/_and/_and.yy | 8 + src/gms2/gdash/scripts/_arrayOf/_arrayOf.gml | 19 + src/gms2/gdash/scripts/_arrayOf/_arrayOf.yy | 8 + .../gdash/scripts/_cloneArray/_cloneArray.gml | 21 + .../gdash/scripts/_cloneArray/_cloneArray.yy | 8 + src/gms2/gdash/scripts/_collect/_collect.gml | 19 + src/gms2/gdash/scripts/_collect/_collect.yy | 8 + src/gms2/gdash/scripts/_concat/_concat.gml | 24 + src/gms2/gdash/scripts/_concat/_concat.yy | 8 + .../gdash/scripts/_contains/_contains.gml | 53 + src/gms2/gdash/scripts/_contains/_contains.yy | 8 + src/gms2/gdash/scripts/_destroy/_destroy.gml | 14 + src/gms2/gdash/scripts/_destroy/_destroy.yy | 8 + src/gms2/gdash/scripts/_filter/_filter.gml | 25 + src/gms2/gdash/scripts/_filter/_filter.yy | 8 + src/gms2/gdash/scripts/_find/_find.gml | 16 + src/gms2/gdash/scripts/_find/_find.yy | 8 + src/gms2/gdash/scripts/_free/_free.gml | 31 + src/gms2/gdash/scripts/_free/_free.yy | 8 + src/gms2/gdash/scripts/_get/_get.gml | 29 + src/gms2/gdash/scripts/_get/_get.yy | 8 + src/gms2/gdash/scripts/_indexOf/_indexOf.gml | 22 + src/gms2/gdash/scripts/_indexOf/_indexOf.yy | 8 + src/gms2/gdash/scripts/_isEqual/_isEqual.gml | 81 + src/gms2/gdash/scripts/_isEqual/_isEqual.yy | 8 + src/gms2/gdash/scripts/_join/_join.gml | 33 + src/gms2/gdash/scripts/_join/_join.yy | 8 + src/gms2/gdash/scripts/_keys/_keys.gml | 26 + src/gms2/gdash/scripts/_keys/_keys.yy | 8 + src/gms2/gdash/scripts/_length/_length.gml | 26 + src/gms2/gdash/scripts/_length/_length.yy | 8 + src/gms2/gdash/scripts/_log/_log.gml | 4 + src/gms2/gdash/scripts/_log/_log.yy | 8 + src/gms2/gdash/scripts/_map/_map.gml | 51 + src/gms2/gdash/scripts/_map/_map.yy | 8 + src/gms2/gdash/scripts/_partial/_partial.gml | 32 + src/gms2/gdash/scripts/_partial/_partial.yy | 8 + src/gms2/gdash/scripts/_push/_push.gml | 16 + src/gms2/gdash/scripts/_push/_push.yy | 8 + src/gms2/gdash/scripts/_reduce/_reduce.gml | 26 + src/gms2/gdash/scripts/_reduce/_reduce.yy | 8 + src/gms2/gdash/scripts/_run/_run.gml | 31 + src/gms2/gdash/scripts/_run/_run.yy | 8 + src/gms2/gdash/scripts/_set/_set.gml | 33 + src/gms2/gdash/scripts/_set/_set.yy | 8 + src/gms2/gdash/scripts/_split/_split.gml | 30 + src/gms2/gdash/scripts/_split/_split.yy | 8 + src/gms2/gdash/scripts/_spread/_spread.gml | 53 + src/gms2/gdash/scripts/_spread/_spread.yy | 8 + src/gms2/gdash/scripts/_times/_times.gml | 21 + src/gms2/gdash/scripts/_times/_times.yy | 8 + src/gms2/gdash/scripts/_typeOf/_typeOf.gml | 38 + src/gms2/gdash/scripts/_typeOf/_typeOf.yy | 8 + src/gms2/gdash/scripts/_uniq/_uniq.gml | 21 + src/gms2/gdash/scripts/_uniq/_uniq.yy | 8 + src/gms2/gdash/scripts/assert/assert.gml | 21 + src/gms2/gdash/scripts/assert/assert.yy | 8 + .../assert_does_not_exist.gml | 13 + .../assert_does_not_exist.yy | 8 + .../scripts/assert_exists/assert_exists.gml | 13 + .../scripts/assert_exists/assert_exists.yy | 8 + .../gdash/scripts/assert_not/assert_not.gml | 21 + .../gdash/scripts/assert_not/assert_not.yy | 8 + .../create_assert_error.gml | 5 + .../create_assert_error.yy | 8 + src/gms2/gdash/scripts/describe/describe.gml | 14 + src/gms2/gdash/scripts/describe/describe.yy | 8 + src/gms2/gdash/scripts/info/info.gml | 10 + src/gms2/gdash/scripts/info/info.yy | 8 + .../scripts/int_to_event/int_to_event.gml | 60 + .../scripts/int_to_event/int_to_event.yy | 8 + src/gms2/gdash/scripts/macros/macros.gml | 0 src/gms2/gdash/scripts/macros/macros.yy | 8 + src/gms2/gdash/scripts/test_end/test_end.gml | 13 + src/gms2/gdash/scripts/test_end/test_end.yy | 8 + .../gdash/scripts/test_fail/test_fail.gml | 10 + src/gms2/gdash/scripts/test_fail/test_fail.yy | 8 + .../gdash/scripts/test_init/test_init.gml | 10 + src/gms2/gdash/scripts/test_init/test_init.yy | 8 + .../gdash/scripts/test_next/test_next.gml | 7 + src/gms2/gdash/scripts/test_next/test_next.yy | 8 + .../test_suite_pass/test_suite_pass.gml | 12 + .../test_suite_pass/test_suite_pass.yy | 8 + .../03e6bf78-c9fc-4f10-9549-7dc253ca0bfc.yy | 17 + .../06188c03-8a58-4be1-b30b-7286b73779ee.yy | 13 + .../2481bf08-af5f-487f-8ba3-de56222d643f.yy | 27 + .../2c55db64-9b48-4e9d-946e-d61128133698.yy | 16 + .../3d4c1a45-cb51-440d-93f7-4508fb15da2d.yy | 13 + .../3df7296c-6ac7-4b71-8f67-7202521cb283.yy | 13 + .../411563b4-d20f-4313-8e25-baafa8501c71.yy | 13 + .../47c9dcf3-db98-49b6-b391-9e8d4ad93ccb.yy | 13 + .../4b2720a1-e8f2-435e-b526-fecdfa79b961.yy | 25 + .../505546f7-b585-45b1-b369-4161fccd19b6.yy | 13 + .../5f7a0fdf-5764-4afb-8e56-a4e70ee39bd9.yy | 13 + .../64593d4e-15ef-4f3d-8662-12fd73e7efe9.yy | 13 + .../89db00f9-3361-426a-ba04-cae6a2664a3e.yy | 15 + .../8ebd4763-7203-42aa-9554-cc55d03a802b.yy | 41 + .../94736fe3-0d88-4094-9ad3-af09d1fd4782.yy | 13 + .../a4eea40d-a933-497b-b91f-7e386fa9a986.yy | 13 + .../aaa232fc-30a0-4c62-950f-a776d3fef239.yy | 13 + .../c180f1aa-9fbf-4693-a798-00a3c87790d1.yy | 17 + .../cfd80378-4324-4b7a-9b8d-fd071e4b1e80.yy | 14 + .../dc6060fd-690b-4fe2-8ac8-c86faf2e04c0.yy | 13 + .../e03eb5fc-f39c-4961-9abd-4347303a7909.yy | 13 + .../ecfa581b-ebf3-43f2-b17d-cd091ea11541.yy | 13 + .../ef1f07da-8677-4904-9251-8af85ce5ae10.yy | 13 + 163 files changed, 4953 insertions(+) create mode 100644 src/gms2/gdash/gdash.yyp create mode 100644 src/gms2/gdash/notes/compatibility_report_110117_90219219.txt create mode 100644 src/gms2/gdash/notes/compatibility_report_110117_90219219.yy create mode 100644 src/gms2/gdash/notes/notes.txt create mode 100644 src/gms2/gdash/notes/notes.yy create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Create_0.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_10.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_11.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_12.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_13.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_14.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_15.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_16.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_17.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_18.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_19.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_20.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_21.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_22.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_23.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/Other_24.gml create mode 100644 src/gms2/gdash/objects/obj_gdash_test_1/obj_gdash_test_1.yy create mode 100644 src/gms2/gdash/options/linux/options_linux.yy create mode 100644 src/gms2/gdash/options/mac/icon512.png create mode 100644 src/gms2/gdash/options/mac/icons/icon512.png create mode 100644 src/gms2/gdash/options/mac/options_mac.yy create mode 100644 src/gms2/gdash/options/mac/splash.png create mode 100644 src/gms2/gdash/options/mac/splash/splash.png create mode 100644 src/gms2/gdash/options/main/inherited/options_main.inherited.yy create mode 100644 src/gms2/gdash/options/windows/License.txt create mode 100644 src/gms2/gdash/options/windows/RunnerInstaller.nsi create mode 100644 src/gms2/gdash/options/windows/Runner_Icon_256.ico create mode 100644 src/gms2/gdash/options/windows/Runner_finish.bmp create mode 100644 src/gms2/gdash/options/windows/Runner_header.bmp create mode 100644 src/gms2/gdash/options/windows/installer/license.txt create mode 100644 src/gms2/gdash/options/windows/installer/runnerinstaller.nsi create mode 100644 src/gms2/gdash/options/windows/options_windows.yy create mode 100644 src/gms2/gdash/options/windows/runner_icon.ico create mode 100644 src/gms2/gdash/options/windows/splash.png create mode 100644 src/gms2/gdash/rooms/room0/room0.yy create mode 100644 src/gms2/gdash/scripts/@instance_create/instance_create.gml create mode 100644 src/gms2/gdash/scripts/@instance_create/instance_create.yy create mode 100644 src/gms2/gdash/scripts/@object_get_depth/object_get_depth.gml create mode 100644 src/gms2/gdash/scripts/@object_get_depth/object_get_depth.yy create mode 100644 src/gms2/gdash/scripts/__add/__add.gml create mode 100644 src/gms2/gdash/scripts/__add/__add.yy create mode 100644 src/gms2/gdash/scripts/__double/__double.gml create mode 100644 src/gms2/gdash/scripts/__double/__double.yy create mode 100644 src/gms2/gdash/scripts/__global_object_depths/__global_object_depths.gml create mode 100644 src/gms2/gdash/scripts/__global_object_depths/__global_object_depths.yy create mode 100644 src/gms2/gdash/scripts/__greaterThanThree/__greaterThanThree.gml create mode 100644 src/gms2/gdash/scripts/__greaterThanThree/__greaterThanThree.yy create mode 100644 src/gms2/gdash/scripts/__isEven/__isEven.gml create mode 100644 src/gms2/gdash/scripts/__isEven/__isEven.yy create mode 100644 src/gms2/gdash/scripts/__sum/__sum.gml create mode 100644 src/gms2/gdash/scripts/__sum/__sum.yy create mode 100644 src/gms2/gdash/scripts/_and/_and.gml create mode 100644 src/gms2/gdash/scripts/_and/_and.yy create mode 100644 src/gms2/gdash/scripts/_arrayOf/_arrayOf.gml create mode 100644 src/gms2/gdash/scripts/_arrayOf/_arrayOf.yy create mode 100644 src/gms2/gdash/scripts/_cloneArray/_cloneArray.gml create mode 100644 src/gms2/gdash/scripts/_cloneArray/_cloneArray.yy create mode 100644 src/gms2/gdash/scripts/_collect/_collect.gml create mode 100644 src/gms2/gdash/scripts/_collect/_collect.yy create mode 100644 src/gms2/gdash/scripts/_concat/_concat.gml create mode 100644 src/gms2/gdash/scripts/_concat/_concat.yy create mode 100644 src/gms2/gdash/scripts/_contains/_contains.gml create mode 100644 src/gms2/gdash/scripts/_contains/_contains.yy create mode 100644 src/gms2/gdash/scripts/_destroy/_destroy.gml create mode 100644 src/gms2/gdash/scripts/_destroy/_destroy.yy create mode 100644 src/gms2/gdash/scripts/_filter/_filter.gml create mode 100644 src/gms2/gdash/scripts/_filter/_filter.yy create mode 100644 src/gms2/gdash/scripts/_find/_find.gml create mode 100644 src/gms2/gdash/scripts/_find/_find.yy create mode 100644 src/gms2/gdash/scripts/_free/_free.gml create mode 100644 src/gms2/gdash/scripts/_free/_free.yy create mode 100644 src/gms2/gdash/scripts/_get/_get.gml create mode 100644 src/gms2/gdash/scripts/_get/_get.yy create mode 100644 src/gms2/gdash/scripts/_indexOf/_indexOf.gml create mode 100644 src/gms2/gdash/scripts/_indexOf/_indexOf.yy create mode 100644 src/gms2/gdash/scripts/_isEqual/_isEqual.gml create mode 100644 src/gms2/gdash/scripts/_isEqual/_isEqual.yy create mode 100644 src/gms2/gdash/scripts/_join/_join.gml create mode 100644 src/gms2/gdash/scripts/_join/_join.yy create mode 100644 src/gms2/gdash/scripts/_keys/_keys.gml create mode 100644 src/gms2/gdash/scripts/_keys/_keys.yy create mode 100644 src/gms2/gdash/scripts/_length/_length.gml create mode 100644 src/gms2/gdash/scripts/_length/_length.yy create mode 100644 src/gms2/gdash/scripts/_log/_log.gml create mode 100644 src/gms2/gdash/scripts/_log/_log.yy create mode 100644 src/gms2/gdash/scripts/_map/_map.gml create mode 100644 src/gms2/gdash/scripts/_map/_map.yy create mode 100644 src/gms2/gdash/scripts/_partial/_partial.gml create mode 100644 src/gms2/gdash/scripts/_partial/_partial.yy create mode 100644 src/gms2/gdash/scripts/_push/_push.gml create mode 100644 src/gms2/gdash/scripts/_push/_push.yy create mode 100644 src/gms2/gdash/scripts/_reduce/_reduce.gml create mode 100644 src/gms2/gdash/scripts/_reduce/_reduce.yy create mode 100644 src/gms2/gdash/scripts/_run/_run.gml create mode 100644 src/gms2/gdash/scripts/_run/_run.yy create mode 100644 src/gms2/gdash/scripts/_set/_set.gml create mode 100644 src/gms2/gdash/scripts/_set/_set.yy create mode 100644 src/gms2/gdash/scripts/_split/_split.gml create mode 100644 src/gms2/gdash/scripts/_split/_split.yy create mode 100644 src/gms2/gdash/scripts/_spread/_spread.gml create mode 100644 src/gms2/gdash/scripts/_spread/_spread.yy create mode 100644 src/gms2/gdash/scripts/_times/_times.gml create mode 100644 src/gms2/gdash/scripts/_times/_times.yy create mode 100644 src/gms2/gdash/scripts/_typeOf/_typeOf.gml create mode 100644 src/gms2/gdash/scripts/_typeOf/_typeOf.yy create mode 100644 src/gms2/gdash/scripts/_uniq/_uniq.gml create mode 100644 src/gms2/gdash/scripts/_uniq/_uniq.yy create mode 100644 src/gms2/gdash/scripts/assert/assert.gml create mode 100644 src/gms2/gdash/scripts/assert/assert.yy create mode 100644 src/gms2/gdash/scripts/assert_does_not_exist/assert_does_not_exist.gml create mode 100644 src/gms2/gdash/scripts/assert_does_not_exist/assert_does_not_exist.yy create mode 100644 src/gms2/gdash/scripts/assert_exists/assert_exists.gml create mode 100644 src/gms2/gdash/scripts/assert_exists/assert_exists.yy create mode 100644 src/gms2/gdash/scripts/assert_not/assert_not.gml create mode 100644 src/gms2/gdash/scripts/assert_not/assert_not.yy create mode 100644 src/gms2/gdash/scripts/create_assert_error/create_assert_error.gml create mode 100644 src/gms2/gdash/scripts/create_assert_error/create_assert_error.yy create mode 100644 src/gms2/gdash/scripts/describe/describe.gml create mode 100644 src/gms2/gdash/scripts/describe/describe.yy create mode 100644 src/gms2/gdash/scripts/info/info.gml create mode 100644 src/gms2/gdash/scripts/info/info.yy create mode 100644 src/gms2/gdash/scripts/int_to_event/int_to_event.gml create mode 100644 src/gms2/gdash/scripts/int_to_event/int_to_event.yy create mode 100644 src/gms2/gdash/scripts/macros/macros.gml create mode 100644 src/gms2/gdash/scripts/macros/macros.yy create mode 100644 src/gms2/gdash/scripts/test_end/test_end.gml create mode 100644 src/gms2/gdash/scripts/test_end/test_end.yy create mode 100644 src/gms2/gdash/scripts/test_fail/test_fail.gml create mode 100644 src/gms2/gdash/scripts/test_fail/test_fail.yy create mode 100644 src/gms2/gdash/scripts/test_init/test_init.gml create mode 100644 src/gms2/gdash/scripts/test_init/test_init.yy create mode 100644 src/gms2/gdash/scripts/test_next/test_next.gml create mode 100644 src/gms2/gdash/scripts/test_next/test_next.yy create mode 100644 src/gms2/gdash/scripts/test_suite_pass/test_suite_pass.gml create mode 100644 src/gms2/gdash/scripts/test_suite_pass/test_suite_pass.yy create mode 100644 src/gms2/gdash/views/03e6bf78-c9fc-4f10-9549-7dc253ca0bfc.yy create mode 100644 src/gms2/gdash/views/06188c03-8a58-4be1-b30b-7286b73779ee.yy create mode 100644 src/gms2/gdash/views/2481bf08-af5f-487f-8ba3-de56222d643f.yy create mode 100644 src/gms2/gdash/views/2c55db64-9b48-4e9d-946e-d61128133698.yy create mode 100644 src/gms2/gdash/views/3d4c1a45-cb51-440d-93f7-4508fb15da2d.yy create mode 100644 src/gms2/gdash/views/3df7296c-6ac7-4b71-8f67-7202521cb283.yy create mode 100644 src/gms2/gdash/views/411563b4-d20f-4313-8e25-baafa8501c71.yy create mode 100644 src/gms2/gdash/views/47c9dcf3-db98-49b6-b391-9e8d4ad93ccb.yy create mode 100644 src/gms2/gdash/views/4b2720a1-e8f2-435e-b526-fecdfa79b961.yy create mode 100644 src/gms2/gdash/views/505546f7-b585-45b1-b369-4161fccd19b6.yy create mode 100644 src/gms2/gdash/views/5f7a0fdf-5764-4afb-8e56-a4e70ee39bd9.yy create mode 100644 src/gms2/gdash/views/64593d4e-15ef-4f3d-8662-12fd73e7efe9.yy create mode 100644 src/gms2/gdash/views/89db00f9-3361-426a-ba04-cae6a2664a3e.yy create mode 100644 src/gms2/gdash/views/8ebd4763-7203-42aa-9554-cc55d03a802b.yy create mode 100644 src/gms2/gdash/views/94736fe3-0d88-4094-9ad3-af09d1fd4782.yy create mode 100644 src/gms2/gdash/views/a4eea40d-a933-497b-b91f-7e386fa9a986.yy create mode 100644 src/gms2/gdash/views/aaa232fc-30a0-4c62-950f-a776d3fef239.yy create mode 100644 src/gms2/gdash/views/c180f1aa-9fbf-4693-a798-00a3c87790d1.yy create mode 100644 src/gms2/gdash/views/cfd80378-4324-4b7a-9b8d-fd071e4b1e80.yy create mode 100644 src/gms2/gdash/views/dc6060fd-690b-4fe2-8ac8-c86faf2e04c0.yy create mode 100644 src/gms2/gdash/views/e03eb5fc-f39c-4961-9abd-4347303a7909.yy create mode 100644 src/gms2/gdash/views/ecfa581b-ebf3-43f2-b17d-cd091ea11541.yy create mode 100644 src/gms2/gdash/views/ef1f07da-8677-4904-9251-8af85ce5ae10.yy diff --git a/src/gms2/gdash/gdash.yyp b/src/gms2/gdash/gdash.yyp new file mode 100644 index 0000000..07742e7 --- /dev/null +++ b/src/gms2/gdash/gdash.yyp @@ -0,0 +1,1618 @@ +{ + "id": "1deb1b6c-99dd-4081-b006-e64593d4164d", + "modelName": "GMProject", + "mvc": "1.0", + "IsDnDProject": false, + "configs": [ + + ], + "option_ecma": false, + "parentProject": { + "id": "dac5afb2-299a-46dd-b312-77e3903be84b", + "modelName": "GMProjectParent", + "mvc": "1.0", + "alteredResources": [ + { + "Key": "ed6a955d-5826-4f98-a450-10b414266c27", + "Value": { + "id": "bc5580c8-8c3f-4756-bd0b-f039cbce32f9", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + "inherited" + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "options\\main\\options_main.yy", + "resourceType": "GMMainOptions" + } + } + ], + "hiddenResources": [ + + ], + "projectPath": "${base_project}" + }, + "resources": [ + { + "Key": "2481bf08-af5f-487f-8ba3-de56222d643f", + "Value": { + "id": "27c40811-871d-4583-a38c-e66983224c01", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\2481bf08-af5f-487f-8ba3-de56222d643f.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "3d4c1a45-cb51-440d-93f7-4508fb15da2d", + "Value": { + "id": "195cf21f-ed3c-4fe3-a9c5-a121f219cc5f", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\3d4c1a45-cb51-440d-93f7-4508fb15da2d.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "06188c03-8a58-4be1-b30b-7286b73779ee", + "Value": { + "id": "e4915714-5458-4c7e-a5a7-9b085c3c3f74", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\06188c03-8a58-4be1-b30b-7286b73779ee.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "aaa232fc-30a0-4c62-950f-a776d3fef239", + "Value": { + "id": "912b22b3-d063-468c-84f0-bcea945b8ecb", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\aaa232fc-30a0-4c62-950f-a776d3fef239.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "ef1f07da-8677-4904-9251-8af85ce5ae10", + "Value": { + "id": "ba4abd2f-e870-47cf-8606-6e9cf9050a74", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\ef1f07da-8677-4904-9251-8af85ce5ae10.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "c180f1aa-9fbf-4693-a798-00a3c87790d1", + "Value": { + "id": "2e882c8a-adab-4b7a-abd3-752a2a203442", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\c180f1aa-9fbf-4693-a798-00a3c87790d1.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "ecfa581b-ebf3-43f2-b17d-cd091ea11541", + "Value": { + "id": "dfcdc556-f67e-4848-9bed-1a8107699484", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\ecfa581b-ebf3-43f2-b17d-cd091ea11541.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "a4eea40d-a933-497b-b91f-7e386fa9a986", + "Value": { + "id": "8747f2f9-99db-43b1-9415-2774a01ae82c", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\a4eea40d-a933-497b-b91f-7e386fa9a986.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "5f7a0fdf-5764-4afb-8e56-a4e70ee39bd9", + "Value": { + "id": "4d3015ef-17d0-47b2-bb27-4a9052a30a17", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\5f7a0fdf-5764-4afb-8e56-a4e70ee39bd9.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "94736fe3-0d88-4094-9ad3-af09d1fd4782", + "Value": { + "id": "20f37f77-e4c9-4700-b5df-2690160381d9", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\94736fe3-0d88-4094-9ad3-af09d1fd4782.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "3df7296c-6ac7-4b71-8f67-7202521cb283", + "Value": { + "id": "38021ce2-c44b-40b9-9a02-a3f0087ee4ab", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\3df7296c-6ac7-4b71-8f67-7202521cb283.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "cfd80378-4324-4b7a-9b8d-fd071e4b1e80", + "Value": { + "id": "faaeb332-aebe-4207-aa3c-12076be0ba7a", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\cfd80378-4324-4b7a-9b8d-fd071e4b1e80.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "47c9dcf3-db98-49b6-b391-9e8d4ad93ccb", + "Value": { + "id": "95f7581c-b0b8-4b37-9512-cea04fd905c4", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\47c9dcf3-db98-49b6-b391-9e8d4ad93ccb.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "dc6060fd-690b-4fe2-8ac8-c86faf2e04c0", + "Value": { + "id": "ca8f5cd8-572b-4b3e-874b-7c9aa8d57e41", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\dc6060fd-690b-4fe2-8ac8-c86faf2e04c0.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "2c55db64-9b48-4e9d-946e-d61128133698", + "Value": { + "id": "fea9b507-8df9-4f0a-9817-bf411c54e0b9", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\2c55db64-9b48-4e9d-946e-d61128133698.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "411563b4-d20f-4313-8e25-baafa8501c71", + "Value": { + "id": "ef4f1f64-fd2d-4b62-b5e7-f568c437b5af", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\411563b4-d20f-4313-8e25-baafa8501c71.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "a9188620-a624-4a5a-83ae-a1b53faf038b", + "Value": { + "id": "f0d3fbcb-18a3-435a-af70-2209b88fae59", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "options\\linux\\options_linux.yy", + "resourceType": "GMLinuxOptions" + } + }, + { + "Key": "cc98d028-7bdd-4680-85f3-c87a7baa481e", + "Value": { + "id": "7589c12e-e1c8-4c42-97ab-588e0c6230cc", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "options\\windows\\options_windows.yy", + "resourceType": "GMWindowsOptions" + } + }, + { + "Key": "f418569b-3bdd-4706-a0e4-364317f54032", + "Value": { + "id": "0c9b8ef0-4a75-4d37-89de-25cdd3d7a84b", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "options\\mac\\options_mac.yy", + "resourceType": "GMMacOptions" + } + }, + { + "Key": "6e0279a3-8932-432e-b399-b4c2f985b0c5", + "Value": { + "id": "fed56c61-7e22-4140-95ab-c2640ac98b03", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "notes\\notes.yy", + "resourceType": "GMNotes" + } + }, + { + "Key": "4b2720a1-e8f2-435e-b526-fecdfa79b961", + "Value": { + "id": "948601bf-6a23-4483-8736-d84865751576", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\4b2720a1-e8f2-435e-b526-fecdfa79b961.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "e0fc46fa-4a3f-4dff-9f7c-bbbacf49757e", + "Value": { + "id": "fbaf4b10-186c-418c-915c-64ce52c9ba69", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\describe\\describe.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "dbf428c1-1e51-44a8-81d8-8099f5757ec1", + "Value": { + "id": "6420b858-ebf0-4b70-a02d-de6a5be2492c", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\test_suite_pass\\test_suite_pass.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "e811c9f1-b116-489f-940c-6e2575a6fc0b", + "Value": { + "id": "8c469354-7255-4663-9198-9aed75d29797", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\test_init\\test_init.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "37a9a856-63f6-44d9-91f7-ae3bda6f0d00", + "Value": { + "id": "3ceb5141-bdce-4d81-9680-c394d353cba9", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\create_assert_error\\create_assert_error.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "d6c7075b-43fa-455a-8242-42de8f43b800", + "Value": { + "id": "4b4ae749-aec9-4ff9-a89f-670510a37fc9", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\assert\\assert.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "42399293-59c8-4d21-9b4c-ebca4668426b", + "Value": { + "id": "569add6d-12b1-40af-ac35-5b0c4f287142", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\assert_not\\assert_not.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "0a73cea8-e08e-4ed5-b60e-dbf42d1ac111", + "Value": { + "id": "7e7b68e1-27ab-4927-8ac6-9d4225fa179a", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\test_fail\\test_fail.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "03e6bf78-c9fc-4f10-9549-7dc253ca0bfc", + "Value": { + "id": "d9ace085-5691-4ee7-bad7-84ed68d741cf", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\03e6bf78-c9fc-4f10-9549-7dc253ca0bfc.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "71fc0e7e-ac29-4c46-920e-a07621c9158d", + "Value": { + "id": "ddf047e3-a5e8-4c54-8786-2e8411191a9b", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\__add\\__add.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "8ebd4763-7203-42aa-9554-cc55d03a802b", + "Value": { + "id": "289dd3dd-add6-4425-8649-212bde1a4cfb", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\8ebd4763-7203-42aa-9554-cc55d03a802b.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "1ba92935-c21d-4159-91a1-0a778afcbcf6", + "Value": { + "id": "2c4005fd-e6dc-46fc-bd52-e523842dcf4d", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_typeOf\\_typeOf.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "ba3e7b6b-21ed-494e-971b-cb1b202bd637", + "Value": { + "id": "b7d4c284-2ef9-4d36-aea3-7d214cd99165", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\test_end\\test_end.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "a406ae11-12ec-49cd-b1cc-45a333ccd935", + "Value": { + "id": "a1b17962-16d5-42e2-b0aa-3db3dd0e73a9", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\int_to_event\\int_to_event.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "6674cf91-7ea3-4e59-9ebf-1f0caf512692", + "Value": { + "id": "c5ae8e9e-36c7-43c4-b137-0f1535cd2495", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\__isEven\\__isEven.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "0901360a-a162-4c78-b640-eb7ae5bd87e1", + "Value": { + "id": "8c12ccd8-da7b-44ae-a3e6-f1431191f1a2", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\assert_does_not_exist\\assert_does_not_exist.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "cf6d1c85-7152-4e6c-9814-5b6fd0a19260", + "Value": { + "id": "9ae7d97d-6caa-457d-ada1-253124ff9950", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_contains\\_contains.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "c9e911b4-e0a5-44b2-94f6-6a6dc9106a01", + "Value": { + "id": "176f0052-a768-4e9f-8b9d-78ce1ff2d83d", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\info\\info.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "a44c3458-a344-402c-8fd1-6eff64583bc8", + "Value": { + "id": "c7ee1655-c55c-48e2-80b6-f2278c462c7b", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\__double\\__double.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "78a96032-6d47-40a1-94e8-dcb78178a134", + "Value": { + "id": "52ff4490-1727-4bdb-8c98-9d003038855a", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_isEqual\\_isEqual.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "a257ac2f-1258-4606-a6c6-a51a5aaf32b2", + "Value": { + "id": "c9270636-3f84-4274-b42d-eeca7aaccd27", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\test_next\\test_next.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "94e9b58c-1b5c-4e05-8348-05e1155444a6", + "Value": { + "id": "d80d6237-de09-472d-a210-508289f36ecd", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_collect\\_collect.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "10eda2f5-f03f-4f57-83ee-c65c10d22dce", + "Value": { + "id": "199fd487-1647-487b-a6af-42c204d786da", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_filter\\_filter.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "695b8b1b-7f66-473f-aeb5-5d9f1431c1a5", + "Value": { + "id": "2f977fbb-1f22-4e5b-a17d-ef869d00585a", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_destroy\\_destroy.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "a4a5b8b5-6a80-4608-8d72-d363ee719bcd", + "Value": { + "id": "4f01cfd1-4e47-49d2-beed-5fbb5d748dc7", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_concat\\_concat.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "477b2a17-84c8-4ddc-ba07-345ab325cd4f", + "Value": { + "id": "317bdf60-6906-48dc-9e8e-c686ba54642d", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_reduce\\_reduce.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "b5cea827-b3fd-48e4-9686-ccb08fd5d898", + "Value": { + "id": "e4f9e436-4700-44f1-95b3-18bb29397b00", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_partial\\_partial.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "13bccc1f-b0d5-4ec9-aed0-4ec8f6d5078e", + "Value": { + "id": "7cd9968f-ac3f-40b9-8368-79fdff8cdaa9", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_run\\_run.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "0b6ab207-c224-4f47-915c-8286414f04b1", + "Value": { + "id": "96077ce3-cab4-45db-82e8-a990fce9ca75", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\assert_exists\\assert_exists.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "b37db980-06b5-44b7-b0b6-1dca01f04279", + "Value": { + "id": "6d733248-e247-4dda-a6c5-18de6d198806", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_and\\_and.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "bd7bc958-28aa-43a9-8251-81041ca0b631", + "Value": { + "id": "c2b4db1d-e1a2-4656-aee4-caee5cb03e3a", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_push\\_push.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "2e2daba8-4764-4076-8526-b2528785accc", + "Value": { + "id": "dd65cb39-3c63-4ec2-b8e1-2ec42f6932fa", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\__sum\\__sum.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "a6902058-42c5-4eb6-8658-c430cfa31c1a", + "Value": { + "id": "0150e35a-054c-4604-b480-d9db4ec72297", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_arrayOf\\_arrayOf.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "ec3ab82c-0beb-45ba-97e5-236df32ca017", + "Value": { + "id": "5e5b1233-5a67-42f2-a49e-57583dee3580", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_uniq\\_uniq.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "8d7b1a7b-dadd-486c-9b21-deffc695e159", + "Value": { + "id": "c373b590-5a94-4dfc-acc2-4ba48bbc4b57", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_spread\\_spread.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "b340ab46-5d6e-4797-8b0c-07b65051d71d", + "Value": { + "id": "dfa41bb3-79a4-4f8b-96a3-9946fe02483f", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_find\\_find.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "cfac0abc-4609-4eae-a2d7-af54980b51fd", + "Value": { + "id": "75ba1d87-ae76-4abc-bc1c-64b17f94a36c", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_indexOf\\_indexOf.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "e873aad6-9ebf-4686-823d-72033eff542a", + "Value": { + "id": "745f28b2-741a-4e27-bc26-1e918935f7d3", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_map\\_map.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "40753ca5-3efd-4c93-b4b8-ee4bd601c676", + "Value": { + "id": "62da183a-ac18-4671-9b8e-00bdc35e7461", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_log\\_log.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "e80bc793-727b-4912-80cd-2a9381ae60e5", + "Value": { + "id": "33b49993-c784-4682-bd39-a77bbf90774f", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "rooms\\room0\\room0.yy", + "resourceType": "GMRoom" + } + }, + { + "Key": "19877baf-f9bd-4216-b356-45c2b3bf122e", + "Value": { + "id": "3139a5cd-18b1-49b6-a0da-9c030576b8ed", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_free\\_free.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "acbe9db1-5a5b-4ce1-944c-58cf842a7935", + "Value": { + "id": "f699079d-0199-4e22-95e5-f7a831cd6d66", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_get\\_get.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "69828e54-01dd-4a2a-b789-7e999d214dca", + "Value": { + "id": "05602e89-ea82-41c3-8993-54ec8e07249d", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_join\\_join.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "6d5ae3be-c018-4481-abe0-66e69da4ed59", + "Value": { + "id": "067a4344-f4eb-49fc-9723-02decc23236c", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\macros\\macros.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "46c29120-6d6b-44ea-86b8-afacfb700cae", + "Value": { + "id": "5860c0a4-d0c5-4db5-8bb3-97ea8d0efda9", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_set\\_set.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "024cd91c-bb54-4636-a223-6ba0a8f98e80", + "Value": { + "id": "e15462b7-c381-44e6-8e87-e7199f511333", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_cloneArray\\_cloneArray.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "f008e78e-dd51-41d2-bb3d-95199a8e7c3c", + "Value": { + "id": "8baed4a1-7dcd-4018-bbe1-97c1fd3e57d7", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_keys\\_keys.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "eeb441d7-af5e-4ceb-a389-32557c90856f", + "Value": { + "id": "8b14cba2-3714-4528-893c-401aa428b5ce", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_times\\_times.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "a1387e7d-9ef7-458e-8194-e706a534715b", + "Value": { + "id": "a30e9847-2d4f-4776-a0db-e72c59f1a618", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_split\\_split.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "73ab2ea6-b1dd-40ce-9fb0-1356bcff5f3e", + "Value": { + "id": "57763314-898c-43ef-adf9-254e124b5a8d", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\__greaterThanThree\\__greaterThanThree.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "dbd1ee41-adb8-45ec-b8bd-1098a1541bc0", + "Value": { + "id": "16c5c6c4-ab98-4560-aa03-b5efc7001e9b", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\_length\\_length.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "e03eb5fc-f39c-4961-9abd-4347303a7909", + "Value": { + "id": "b30e9352-56a5-455a-9be3-b31af0107220", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\e03eb5fc-f39c-4961-9abd-4347303a7909.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "75161d65-d380-49da-b5bd-8506f3d3c411", + "Value": { + "id": "7b9f5f67-9872-4642-b59b-e31231909108", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "objects\\obj_gdash_test_1\\obj_gdash_test_1.yy", + "resourceType": "GMObject" + } + }, + { + "Key": "89db00f9-3361-426a-ba04-cae6a2664a3e", + "Value": { + "id": "42f9347f-734e-4663-9399-ae0d64e7405a", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\89db00f9-3361-426a-ba04-cae6a2664a3e.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "505546f7-b585-45b1-b369-4161fccd19b6", + "Value": { + "id": "7d3a6038-5bfa-4847-b720-d1eb6bcfee29", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\505546f7-b585-45b1-b369-4161fccd19b6.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "565a36f1-6705-454d-b56c-3f536baa2e0e", + "Value": { + "id": "9b5665a9-66f0-4aab-ae94-9e45b743f112", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\@instance_create\\instance_create.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "64593d4e-15ef-4f3d-8662-12fd73e7efe9", + "Value": { + "id": "43e6ec81-5d82-4592-8dab-79f2480f0dad", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "views\\64593d4e-15ef-4f3d-8662-12fd73e7efe9.yy", + "resourceType": "GMFolder" + } + }, + { + "Key": "bd2b952d-8cfc-4ace-9fb7-13e008ec8523", + "Value": { + "id": "1738ccf0-da42-472e-959a-fb12323b46f4", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\@object_get_depth\\object_get_depth.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "97727621-bd2b-4624-8c61-db3d2d9bf2dd", + "Value": { + "id": "4a2db394-04b2-4fe3-ae3c-8c770c58cec7", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "scripts\\__global_object_depths\\__global_object_depths.yy", + "resourceType": "GMScript" + } + }, + { + "Key": "35170da1-3c2d-439d-ae70-2fcf78b4ca36", + "Value": { + "id": "d7723e5f-705f-4a3e-b069-f0926b947b65", + "modelName": "GMResourceInfo", + "mvc": "1.0", + "configDeltaFiles": [ + + ], + "configDeltas": [ + + ], + "resourceCreationConfigs": [ + "default" + ], + "resourcePath": "notes\\compatibility_report_110117_90219219.yy", + "resourceType": "GMNotes" + } + } + ], + "room_order": [ + "e80bc793-727b-4912-80cd-2a9381ae60e5" + ], + "script_order": [ + "6d5ae3be-c018-4481-abe0-66e69da4ed59", + "565a36f1-6705-454d-b56c-3f536baa2e0e", + "bd2b952d-8cfc-4ace-9fb7-13e008ec8523", + "97727621-bd2b-4624-8c61-db3d2d9bf2dd", + "d6c7075b-43fa-455a-8242-42de8f43b800", + "0901360a-a162-4c78-b640-eb7ae5bd87e1", + "0b6ab207-c224-4f47-915c-8286414f04b1", + "42399293-59c8-4d21-9b4c-ebca4668426b", + "37a9a856-63f6-44d9-91f7-ae3bda6f0d00", + "e0fc46fa-4a3f-4dff-9f7c-bbbacf49757e", + "c9e911b4-e0a5-44b2-94f6-6a6dc9106a01", + "a406ae11-12ec-49cd-b1cc-45a333ccd935", + "ba3e7b6b-21ed-494e-971b-cb1b202bd637", + "0a73cea8-e08e-4ed5-b60e-dbf42d1ac111", + "e811c9f1-b116-489f-940c-6e2575a6fc0b", + "a257ac2f-1258-4606-a6c6-a51a5aaf32b2", + "dbf428c1-1e51-44a8-81d8-8099f5757ec1", + "a44c3458-a344-402c-8fd1-6eff64583bc8", + "71fc0e7e-ac29-4c46-920e-a07621c9158d", + "2e2daba8-4764-4076-8526-b2528785accc", + "73ab2ea6-b1dd-40ce-9fb0-1356bcff5f3e", + "6674cf91-7ea3-4e59-9ebf-1f0caf512692", + "cf6d1c85-7152-4e6c-9814-5b6fd0a19260", + "1ba92935-c21d-4159-91a1-0a778afcbcf6", + "78a96032-6d47-40a1-94e8-dcb78178a134", + "477b2a17-84c8-4ddc-ba07-345ab325cd4f", + "eeb441d7-af5e-4ceb-a389-32557c90856f", + "94e9b58c-1b5c-4e05-8348-05e1155444a6", + "10eda2f5-f03f-4f57-83ee-c65c10d22dce", + "a4a5b8b5-6a80-4608-8d72-d363ee719bcd", + "695b8b1b-7f66-473f-aeb5-5d9f1431c1a5", + "b5cea827-b3fd-48e4-9686-ccb08fd5d898", + "a6902058-42c5-4eb6-8658-c430cfa31c1a", + "13bccc1f-b0d5-4ec9-aed0-4ec8f6d5078e", + "bd7bc958-28aa-43a9-8251-81041ca0b631", + "e873aad6-9ebf-4686-823d-72033eff542a", + "ec3ab82c-0beb-45ba-97e5-236df32ca017", + "b37db980-06b5-44b7-b0b6-1dca01f04279", + "b340ab46-5d6e-4797-8b0c-07b65051d71d", + "f008e78e-dd51-41d2-bb3d-95199a8e7c3c", + "19877baf-f9bd-4216-b356-45c2b3bf122e", + "8d7b1a7b-dadd-486c-9b21-deffc695e159", + "dbd1ee41-adb8-45ec-b8bd-1098a1541bc0", + "acbe9db1-5a5b-4ce1-944c-58cf842a7935", + "46c29120-6d6b-44ea-86b8-afacfb700cae", + "40753ca5-3efd-4c93-b4b8-ee4bd601c676", + "cfac0abc-4609-4eae-a2d7-af54980b51fd", + "a1387e7d-9ef7-458e-8194-e706a534715b", + "69828e54-01dd-4a2a-b789-7e999d214dca", + "024cd91c-bb54-4636-a223-6ba0a8f98e80" + ], + "tutorial": "" +} \ No newline at end of file diff --git a/src/gms2/gdash/notes/compatibility_report_110117_90219219.txt b/src/gms2/gdash/notes/compatibility_report_110117_90219219.txt new file mode 100644 index 0000000..c60fb65 --- /dev/null +++ b/src/gms2/gdash/notes/compatibility_report_110117_90219219.txt @@ -0,0 +1,82 @@ +Converting GML script : ${project_dir}\scripts\assert_not\assert_not.gml +Converted string : line 15 : " shouldn't be true" -> " shouldn\'t be true" +Converted string : line 19 : " shouldn't be " -> " shouldn\'t be " + +Converting GML script : ${project_dir}\scripts\_partial\_partial.gml +Converted string : line 32 : 'function' -> "function" +Converted string : line 33 : 'args' -> "args" +Converted string : line 34 : 'partial' -> "partial" +Converted string : line 34 : 'partial' -> "partial" + +Converting GML script : ${project_dir}\scripts\_run\_run.gml +Converted string : line 24 : 'partial' -> "partial" +Converted string : line 24 : 'partial' -> "partial" +Converted string : line 26 : 'function' -> "function" +Converted string : line 27 : 'args' -> "args" + +Converting GML script : ${project_dir}\scripts\_get\_get.gml +Converted string : line 18 : '.' -> "." + +macOS icon ${options_dir}\mac\icons\icon512.png written out as 32-bit. +Converting GML script : ${project_dir}\scripts\_set\_set.gml +Converted string : line 21 : '.' -> "." + +Converting GML script : ${project_dir}\objects\obj_gdash_test_1\Other_21.gml +Converted string : line 2 : '_indexOf' -> "_indexOf" +Converted string : line 2 : 'Returns the index of a value in a collection' -> "Returns the index of a value in a collection" + +Converting GML script : ${project_dir}\objects\obj_gdash_test_1\Other_20.gml +Converted string : line 2 : '_concat' -> "_concat" +Converted string : line 2 : 'Appends one array to another' -> "Appends one array to another" + +Converting GML script : ${project_dir}\objects\obj_gdash_test_1\Other_19.gml +Converted string : line 2 : '_filter' -> "_filter" +Converted string : line 2 : 'returns an array with elements removed when they are falsey in the function' -> "returns an array with elements removed when they are falsey in the function" + +Converting GML script : ${project_dir}\objects\obj_gdash_test_1\Other_18.gml +Converted string : line 2 : '_find' -> "_find" +Converted string : line 2 : 'returns the first element in an array that is truthy in the function' -> "returns the first element in an array that is truthy in the function" + +Converting GML script : ${project_dir}\objects\obj_gdash_test_1\Other_13.gml +Converted string : line 5 : '1' -> "1" +Converted string : line 6 : '2' -> "2" +Converted string : line 7 : '3' -> "3" +Converted string : line 8 : '4' -> "4" +Converted string : line 9 : '5' -> "5" + +Converting GML script : ${project_dir}\objects\obj_gdash_test_1\Other_12.gml +Converted string : line 5 : 'one' -> "one" +Converted string : line 5 : 'hello' -> "hello" +Converted string : line 6 : 'two' -> "two" +Converted string : line 6 : 'hello' -> "hello" +Converted string : line 7 : 'three' -> "three" +Converted string : line 7 : 'hello' -> "hello" +Converted string : line 8 : 'four' -> "four" +Converted string : line 8 : 'hello' -> "hello" +Converted string : line 9 : 'five' -> "five" +Converted string : line 9 : 'hello' -> "hello" +Converted string : line 14 : 'one' -> "one" +Converted string : line 15 : 'two' -> "two" +Converted string : line 16 : 'three' -> "three" +Converted string : line 17 : 'four' -> "four" +Converted string : line 18 : 'five' -> "five" + +Converting GML script : ${project_dir}\objects\obj_gdash_test_1\Other_11.gml +Converted string : line 5 : 'hello' -> "hello" +Converted string : line 5 : 'ello' -> "ello" +Converted string : line 6 : 'hello' -> "hello" +Converted string : line 6 : 'goodbye' -> "goodbye" +Converted string : line 11 : 'hello' -> "hello" +Converted string : line 12 : 'goodbye' -> "goodbye" +Converted string : line 15 : 'hello' -> "hello" +Converted string : line 16 : 'goodbye' -> "goodbye" +Converted string : line 17 : 'world' -> "world" +Converted string : line 22 : 'hello' -> "hello" +Converted string : line 22 : 'world' -> "world" +Converted string : line 23 : 'number' -> "number" +Converted string : line 25 : 'world' -> "world" + +game speed set to 30 +added compatibility script instance/instance_create.gml +added compatibility script object/object_get_depth.gml +added compatibility script __global_object_depths.gml \ No newline at end of file diff --git a/src/gms2/gdash/notes/compatibility_report_110117_90219219.yy b/src/gms2/gdash/notes/compatibility_report_110117_90219219.yy new file mode 100644 index 0000000..6251ef3 --- /dev/null +++ b/src/gms2/gdash/notes/compatibility_report_110117_90219219.yy @@ -0,0 +1,6 @@ +{ + "id": "35170da1-3c2d-439d-ae70-2fcf78b4ca36", + "modelName": "GMNotes", + "mvc": "1.0", + "name": "compatibility_report_110117_90219219" +} \ No newline at end of file diff --git a/src/gms2/gdash/notes/notes.txt b/src/gms2/gdash/notes/notes.txt new file mode 100644 index 0000000000000000000000000000000000000000..203bb5408b5592cb62c7c3c34e76aa0caccb497c GIT binary patch literal 9 Mcmd<(;srwn00IdBT>t<8 literal 0 HcmV?d00001 diff --git a/src/gms2/gdash/notes/notes.yy b/src/gms2/gdash/notes/notes.yy new file mode 100644 index 0000000..fb80f23 --- /dev/null +++ b/src/gms2/gdash/notes/notes.yy @@ -0,0 +1,6 @@ +{ + "id": "6e0279a3-8932-432e-b399-b4c2f985b0c5", + "modelName": "GMNotes", + "mvc": "1.0", + "name": "notes" +} \ No newline at end of file diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Create_0.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Create_0.gml new file mode 100644 index 0000000..b13f80a --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Create_0.gml @@ -0,0 +1,10 @@ +/// Test descrption +/* + * This test ensures that gdash is working properly + */ + +test_init("gdash"); +test_next(); + +/* */ +/* */ diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_10.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_10.gml new file mode 100644 index 0000000..0873794 --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_10.gml @@ -0,0 +1,9 @@ +/// _typeOf +describe("_typeOf", "Should return the type of any known data type"); + +assert(_typeOf(100), "real"); +assert(_typeOf("hello"), "string"); +assert(_typeOf(undefined), "undefined"); + +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_11.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_11.gml new file mode 100644 index 0000000..3e2076d --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_11.gml @@ -0,0 +1,29 @@ +/// _contains +describe("_contains", "Should determine if arbitrary things contain targets"); + +// String contains string +assert(_contains("hello", "ello"), true); +assert_not(_contains("hello", "goodbye"), true); + +// Array contains +var arr; +arr[0] = 1; +arr[1] = "hello"; +arr[2] = "goodbye"; + +assert(_contains(arr, 1), true); +assert(_contains(arr, "hello"), true); +assert(_contains(arr, "goodbye"), true); +assert_not(_contains(arr, "world"), true); +assert_not(_contains(arr, 2), true); + +// ds_map contains +var map = ds_map_create(); +ds_map_add(map, "hello", "world"); +ds_map_add(map, "number", 2); + +assert(_contains(map, "world"), true); +assert(_contains(map, 2), true); +ds_map_destroy(map); +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_12.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_12.gml new file mode 100644 index 0000000..1f89025 --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_12.gml @@ -0,0 +1,22 @@ +/// _keys +describe("_keys", "Returns an array of all keys in a map"); + +var map = ds_map_create(); +ds_map_add(map, "one", "hello"); +ds_map_add(map, "two", "hello"); +ds_map_add(map, "three", "hello"); +ds_map_add(map, "four", "hello"); +ds_map_add(map, "five", "hello"); + +var keys = _keys(map); + +assert(_length(keys), 5); +assert(_contains(keys, "one")); +assert(_contains(keys, "two")); +assert(_contains(keys, "three")); +assert(_contains(keys, "four")); +assert(_contains(keys, "five")); + +ds_map_destroy(map); +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_13.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_13.gml new file mode 100644 index 0000000..2c67ae0 --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_13.gml @@ -0,0 +1,53 @@ +/// _map +describe("_map", "Iterates over a collection, calling a function"); + +var map = ds_map_create(); +ds_map_add(map, "1", 1); +ds_map_add(map, "2", 2); +ds_map_add(map, "3", 3); +ds_map_add(map, "4", 4); +ds_map_add(map, "5", 5); + +var list = ds_list_create(); +ds_list_add(list, 1, 2, 3, 4, 5); +ds_list_sort(list, true); + +var arr; +arr[0] = 1; +arr[1] = 2; +arr[2] = 3; +arr[3] = 4; +arr[4] = 5; + +var mapRes = _map(map, __double, ds_type_map); +var listRes = _map(list, __double, ds_type_list); +var arrRes = _map(arr, __double); + +var addTwo = _partial(__add, 2); +var arrRes2 = _map(arr, addTwo); + +assert(arrRes2[0], 3); + +assert(_length(mapRes), 5); +assert(_contains(mapRes, 2)); +assert(_contains(mapRes, 4)); +assert(_contains(mapRes, 6)); +assert(_contains(mapRes, 8)); +assert(_contains(mapRes, 10)); + +assert(_length(listRes), 5); +assert(listRes[0], 2); +assert(listRes[1], 4); +assert(listRes[2], 6); +assert(listRes[3], 8); +assert(listRes[4], 10); + +assert(_length(arrRes), 5); +assert(arrRes[0], 2); +assert(arrRes[1], 4); +assert(arrRes[2], 6); +assert(arrRes[3], 8); +assert(arrRes[4], 10); + +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_14.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_14.gml new file mode 100644 index 0000000..0fd24b4 --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_14.gml @@ -0,0 +1,14 @@ +/// _reduce +describe("_reduce", "Iterates over an array, calling a function, returning the overall result"); + +var arr; +arr[0] = 1; +arr[1] = 2; +arr[2] = 3; +arr[3] = 4; +arr[4] = 5; + +assert(_reduce(arr, __sum), 15); + +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_15.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_15.gml new file mode 100644 index 0000000..e3a7518 --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_15.gml @@ -0,0 +1,54 @@ +/// _isEqual +describe("_isEqual", "Determines if two values are equal"); + +assert(_isEqual(1, 1)); +assert(_isEqual("hello", "hello")); +assert_not(_isEqual(1, 2)); +assert_not(_isEqual("hello", "world")); + +var map = ds_map_create(); +ds_map_add(map, "test", 1); +ds_map_add(map, "test2", "hello"); + +var map2 = ds_map_create(); +ds_map_add(map2, "test", 1); +ds_map_add(map2, "test2", "hello"); + +var map3 = ds_map_create(); +ds_map_add(map3, "test", 2); +ds_map_add(map3, "test2", "hello"); + +var map4 = ds_map_create(); +ds_map_add(map4, "test", 2); + +assert(_isEqual(map, map2, ds_type_map)); +assert_not(_isEqual(map, map3, ds_type_map)); +assert_not(_isEqual(map, map4, ds_type_map)); + +var arr1 = _arrayOf(0, 1, 2, 3, 4); +var arr2 = _arrayOf(0, 1, 2, 3, 4); +var arr3 = _arrayOf(0, 1, 2, 3, 5); +var arr4 = _arrayOf(0, 1, 2, 3); + +assert(_isEqual(arr1, arr2)); +assert_not(_isEqual(arr1, arr3)); +assert_not(_isEqual(arr1, arr4)); + +var list1 = ds_list_create(); +ds_list_add(list1, 1, 2, 3, "hello"); + +var list2 = ds_list_create(); +ds_list_add(list2, 1, 2, 3, "hello"); + +var list3 = ds_list_create(); +ds_list_add(list3, 1, 2, 3, "goodbye"); + +var list4 = ds_list_create(); +ds_list_add(list4, 2, 3, "hello"); + +assert(_isEqual(list1, list2, ds_type_list)); +assert_not(_isEqual(list1, list3, ds_type_list)); +assert_not(_isEqual(list1, list4, ds_type_list)); + +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_16.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_16.gml new file mode 100644 index 0000000..55abfb1 --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_16.gml @@ -0,0 +1,10 @@ +/// _uniq +describe("_uniq", "Removes duplicate values from an array"); + +var duped = _arrayOf(1, 1, 2, 2, "hello", "hello", 3); +var unique = _arrayOf(1, 2, "hello", 3); + +assert(_isEqual(_uniq(duped), unique)); + +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_17.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_17.gml new file mode 100644 index 0000000..d36b5dd --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_17.gml @@ -0,0 +1,12 @@ +/// _push +describe("_push", "Adds an element to an array"); + +var arr = _arrayOf(0, 1, 2); +assert(_length(arr), 3); + +arr = _push(arr, 3); +assert(_length(arr), 4); +assert(arr[3], 3); + +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_18.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_18.gml new file mode 100644 index 0000000..7abcf63 --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_18.gml @@ -0,0 +1,10 @@ +/// _find +describe("_find", "returns the first element in an array that is truthy in the function"); + +var arr = _arrayOf(0, 1, 2, 3, 40, 5); +var res = _find(arr, __greaterThanThree); + +assert(res, 40); + +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_19.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_19.gml new file mode 100644 index 0000000..e76aca0 --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_19.gml @@ -0,0 +1,18 @@ +/// _filter +describe("_filter", "returns an array with elements removed when they are falsey in the function"); + +var arr = _arrayOf(0, 1, 2, 3, 4, 5, 6); + +var res = _filter(arr, __isEven); + +assert(_contains(res, 0)); +assert(_contains(res, 2)); +assert(_contains(res, 4)); +assert(_contains(res, 6)); + +assert_not(_contains(res, 1)); +assert_not(_contains(res, 3)); +assert_not(_contains(res, 5)); + +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_20.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_20.gml new file mode 100644 index 0000000..7def97c --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_20.gml @@ -0,0 +1,18 @@ +/// _concat +describe("_concat", "Appends one array to another"); + +var arr1 = _arrayOf(0, 1, 2); +var arr2 = _arrayOf(30, 40, 50); + +var res = _concat(arr1, arr2); + +assert(_length(res), 6); + +assert(res[0], 0); +assert(res[1], 1); +assert(res[2], 2); +assert(res[3], 30); +assert(res[4], 40); +assert(res[5], 50); +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_21.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_21.gml new file mode 100644 index 0000000..8114061 --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_21.gml @@ -0,0 +1,18 @@ +/// _indexOf +describe("_indexOf", "Returns the index of a value in a collection"); + +var arr = _arrayOf(1, 2, 3, 4); +var list = ds_list_create(); +list[| 0] = 1; +list[| 1] = 2; +list[| 2] = 3; +list[| 3] = 4; + +assert(_indexOf(arr, 2), 1); +assert(_indexOf(arr, 3), 2); +assert(_indexOf(arr, 6), -1); +assert(_indexOf(list, 2), 1); +assert(_indexOf(list, 100), -1); + +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_22.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_22.gml new file mode 100644 index 0000000..65eba57 --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_22.gml @@ -0,0 +1,11 @@ +/// _set +describe("_set", "Sets a value safely in a deeply nested map"); + +var map = ds_map_create(); +_set(map, "hello.world", 2); + +var hello = map[? "hello"]; +assert(hello[? "world"], 2); + +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_23.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_23.gml new file mode 100644 index 0000000..5f40d0b --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_23.gml @@ -0,0 +1,12 @@ +/// _get +describe("_get", "Retrieves a deeply nested map value"); + +var map = ds_map_create(); +map[? "hello"] = ds_map_create(); +var hello = map[? "hello"]; +hello[? "world"] = 2; + +assert(_get(map, "hello.world"), 2); + +test_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_24.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_24.gml new file mode 100644 index 0000000..466d172 --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_24.gml @@ -0,0 +1,13 @@ +/// _cloneArray +describe("_cloneArray", "Returns a clone of the given array"); + +var arr = _arrayOf(2, 1, 5, 4, 6); +var cloned = _cloneArray(arr); + +for (var i = 0; i < array_length_1d(arr); i++) { + assert(cloned[i], arr[i]); +} + +test_end(); +game_end(); + diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/obj_gdash_test_1.yy b/src/gms2/gdash/objects/obj_gdash_test_1/obj_gdash_test_1.yy new file mode 100644 index 0000000..863e7e1 --- /dev/null +++ b/src/gms2/gdash/objects/obj_gdash_test_1/obj_gdash_test_1.yy @@ -0,0 +1,188 @@ +{ + "id": "75161d65-d380-49da-b5bd-8506f3d3c411", + "modelName": "GMObject", + "mvc": "1.0", + "name": "obj_gdash_test_1", + "eventList": [ + { + "id": "8632fd84-1520-469f-b3d7-5e4bbbd99107", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 0, + "eventtype": 0, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "0e173cd1-bd1f-4176-96e0-ddf6dfe91f6d", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 24, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "b30a31c2-4daa-46ab-8faa-8c37ac839dd0", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 23, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "426670be-3809-4dad-ad89-8c8fca128eea", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 22, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "4b6a4f6e-96d2-4522-b9d6-8072ae6af6bb", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 21, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "cb8a198d-3889-41fc-a82f-a8e7774b34d6", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 20, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "29aa07a0-69e1-40a1-bbe9-b782ff439288", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 19, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "6026159a-f235-49c1-a8fb-58cb2305f2ef", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 18, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "e6475fab-3d97-437c-a367-823f1d7dfccd", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 17, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "5d7407e8-e0dc-458c-96e4-f726d9549d32", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 16, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "f541725a-6a06-462e-a000-f4a216d8f4c7", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 15, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "66f9d326-42e4-41a0-a276-857b5334c6fe", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 14, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "aa5184e7-73fa-482f-9422-96502118b36d", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 13, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "867f03f7-8373-4177-8376-901dd266e3b8", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 12, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "0eea83dd-9ee0-413c-881e-64e5a8d431b4", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 11, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + }, + { + "id": "924cd2f3-49bc-4d59-93e2-1139b0cf33cb", + "modelName": "GMEvent", + "mvc": "1.0", + "IsDnD": false, + "collisionObjectId": "00000000-0000-0000-0000-000000000000", + "enumb": 10, + "eventtype": 7, + "m_owner": "75161d65-d380-49da-b5bd-8506f3d3c411" + } + ], + "maskSpriteId": "00000000-0000-0000-0000-000000000000", + "parentObjectId": "00000000-0000-0000-0000-000000000000", + "persistent": false, + "physicsAngularDamping": 0.1, + "physicsDensity": 0.5, + "physicsFriction": 0.2, + "physicsGroup": 0, + "physicsKinematic": false, + "physicsLinearDamping": 0.1, + "physicsObject": false, + "physicsRestitution": 0.1, + "physicsSensor": false, + "physicsShape": 0, + "physicsShapePoints": [ + + ], + "physicsStartAwake": true, + "solid": false, + "spriteId": "00000000-0000-0000-0000-000000000000", + "visible": true +} \ No newline at end of file diff --git a/src/gms2/gdash/options/linux/options_linux.yy b/src/gms2/gdash/options/linux/options_linux.yy new file mode 100644 index 0000000..06513b8 --- /dev/null +++ b/src/gms2/gdash/options/linux/options_linux.yy @@ -0,0 +1,28 @@ +{ + "id": "a9188620-a624-4a5a-83ae-a1b53faf038b", + "modelName": "GMLinuxOptions", + "mvc": "1.0", + "name": "Linux", + "option_linux_allow_fullscreen": true, + "option_linux_display_name": "gdash", + "option_linux_display_splash": false, + "option_linux_enable_steam": false, + "option_linux_homepage": "http:\/\/www.gdash.com", + "option_linux_icon": "${base_options_dir}\\linux\\icons\\64.png", + "option_linux_interpolate_pixels": false, + "option_linux_long_desc": "gdash", + "option_linux_maintainer_email": "", + "option_linux_resize_window": false, + "option_linux_scale": 0, + "option_linux_short_desc": "gdash", + "option_linux_splash_screen": "${base_options_dir}\\linux\\splash\\splash.png", + "option_linux_start_fullscreen": false, + "option_linux_sync": false, + "option_linux_texture_page": "2048x2048", + "option_linux_version": { + "build": 0, + "major": 1, + "minor": 0, + "revision": 0 + } +} \ No newline at end of file diff --git a/src/gms2/gdash/options/mac/icon512.png b/src/gms2/gdash/options/mac/icon512.png new file mode 100644 index 0000000000000000000000000000000000000000..e52862593036e358e6c85fbe48a77d40f3501d13 GIT binary patch literal 31974 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 literal 0 HcmV?d00001 diff --git a/src/gms2/gdash/options/mac/icons/icon512.png b/src/gms2/gdash/options/mac/icons/icon512.png new file mode 100644 index 0000000000000000000000000000000000000000..2646edb40518dcabaef2e9dd7174e8e0ead41570 GIT binary patch literal 19569 zcmeEuWmi?-7w!QBlt#J)K}jW*E~UG>ySp1ix|LEuq`SL2B&G9^(%lVro!`B$?q~SF zQpb=z)?Rz9IiH$@$;*nNqY$G&AP{s3abZOW1Rneq9`YOs{BiC+c?*F^b4mz*Qg%;0 zfFir&ZT(<>)XER^JkrU$T1r9DwR z`DL37E;G=RVE5&>*sqX>QJ#^~C}&z?GK zgiP=ZjxD)L?TtGRayUX%tqGC)9xpYMGIP|++*Xw^SOdc3Py~$4Q?Zi6&Of8)^ z!PU8BiB=k$S7N#Ol5^2~#uv|+< zyFwcR>`z?(HsV5$V_ZAd1R^^Ko*d!wT;r{DqBr-`Y~t!!k=P%c@9AK*O>Fajc7Xb+{^xvWrNCOJl3TGhBP=7c2aP}^w+}v|MaKe1Uc_DutncL7wo5SE0G#Y@O5Q(-?t0- zeJ_b)8D0j~POaTc8hb1mSxT;8wQ+fXk=>k@W4W4NANcF)r+eWzYLG>D#~ePJZe)9Z zHzd0)J;W#-Z+%*Zk@SsG)h)z6YXe_#W>f#@QSFx8@ywy~3&&ddM$!*(q{8MR zvR1HHvccXvGd|Flk`^ks>_={Ot&(q8u7;m?K+n%kXUl^1uhIOx&+Z0uA<%pm3E`IB zT?Bu72RS^(!?Mo5bH1>%*|mB7+Auz((p-@`z=1LO-Z&q2WUMA+vYQjKcGb(U%%r`h zuTkxcXuOPWc-Bu2{B(N%*zD?l$J$AI4euXYNlk)~cilcRCOG=`efxAP`AfAP!>({N z=f%YJxLoz$iRJW~9>r2RWRKO)6X+LKUg|}4Krp%Rq2X%cqxTEXa{>jm^^6ytzD5o+ z!~Ncuq{8r444q>Vv(yPc?3Ow0J$4sJl_~k#7|+jQU&s_ZjIz??$5t3oW;E(`Qy3lf z>L`ds;?sEA%=N~YJ*I2-v|n>*3Wu$g4n|xLAvNUr-O^}Z@=bvK)t1-t$Yu+1Uh^3q z-(OMFBl8H4vYt%xg~vu#Xh*KyfJ%)*{OKDDlgP??WzltV6a~#!0(VVk^>e*gg1!3r zkiW`K2sn5S`YR=H5 zc{?R3k?tx|_POHYo|&K5FFE*rEHpgG*LA%F{e7xW1NaTjc|Vwh*PI=>b_XNpw)S`T z{2QdQsu_inx^=G?p4>&IeqAH*9#9>xVv6&7^ULmx(>?!%1a+LtG6lXg7Jg;9T$J(7GdC)Y*%u z4&cIf=YFaYc`xqEqqS!l>e+1%C)m%g8R+E2z)b&IeoxWath1}5|2h*l$Si6KpYX$9 zy!BTvrolC_v}q30A#qe8+aurj@<*;Bt&;5|yWqnf@kq{}it@zBKe2FvSUw{NG&k*Y z3F~@(;=Fj+5&x!{1PqeJk{_&X;w}8F@7U~?krDIh_8)Cy2YjD$(-V$z<;F3?Wcps+ z-DTwWTYNU*r$PPZ!n$u)OL*mRy#D#kyRD|d5kneJqis@wR5^~`RR2$GKFsda909Cb ze!iHKp(%%5!!?H;QxkA<56i3Sb@!YEh~HFLtsz+5X`{)ApN=s$?gmG|@ub)jN4M2J zdelAk%-ol1V;zyd8`qNTv#I!`ilIrYQvEPDM=^%`>(0UJz$=_^J%FoBnDWBLrA$4v z+ISm6vE-9mI@rPX#Qk|s@w~@b1~c5HYmz*~VAOQa7B%(UJ@oW3y>Vb9zxT&vQDJo2 zxiM{LNY(evR_Qh=C*8=-4TLFL?uFkjABCZY;AyE#y3r>QU$EIav|xL_IT$y9ENo*D zF`bjYMzkL}Ct$FU&b1bIJ|bXRH2*j^Jc@lHmF1N|Z&c}2+tb-b9Ev_Dm)SDan4TY} zjYbaXo}EauGcoEB#WYFcy!{oChp_oBtTX*-j(Y)q>s^@YrBz<3tPO+E373mowv%qy zm!g=gAO_aj{4w3+dtus3KlR@(bi$ZJ$8dtQyh<@_78`_D@}bUm$;+elVqffytym

D^^7k$UY(q4*5) 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 T7|7FJsC)}*eFn4ylz8|*iL9N; literal 0 HcmV?d00001 diff --git a/src/gms2/gdash/options/windows/installer/license.txt b/src/gms2/gdash/options/windows/installer/license.txt new file mode 100644 index 0000000..1842321 --- /dev/null +++ b/src/gms2/gdash/options/windows/installer/license.txt @@ -0,0 +1,42 @@ +This Application was made using GameMaker. GameMaker is the intellectual property of YoYo Games Ltd, a company of the United Kingdom. + +THIS END USER LICENSE AGREEMENT APPLIES TO ALL USE OF THIS APPLICATION. + +Scope +----- +You may: + +Install and use this Application for personal, or commercial use [provided you have paid any license fee, if this applies]; + +You must not: + +use, copy, transfer, distribute modify, adapt, merge, translate, decompile, disassemble, or reverse engineer the Application or part of it except as expressly permitted by this Licence; +remove, modify, or tamper with any copyright, trademark or other notice; +use the Application for any illegal, unlawful or immoral purposes. + + +Term +---- +This License will end automatically if you breach any of the terms. +When this License ends you must stop all use of the Application and destroy and erase any copies you have. + + +Liability +--------- + +YoYo Games Limited (“YoYo Games) is not involved in the creation of this Application except only that it was made using GameMaker. YoYo Games warrants only that GameMaker will function satisfactorily if used properly and on the correct operating system. +YoYo Games does not warrant that the operation of the Appication will be uninterrupted or error free or that errors can be corrected. You install and use the Application at your own risk and in no event will YoYo Games be liable to you for any loss or damage of any kind (except personal injury or death arising from YoYo Games’ negligence) including lost profits or other consequential loss arising from the use of or inability to use the Application or from errors or deficiencies in it whether caused by negligence or otherwise. +To the maximum extent permitted by law, YoYo Games Limited excludes liability for all warranties, conditions and other terms which but for this notice would have effect. + + +General +------- + +All copyright and other intellectual property rights in GameMaker and parts of it included in the Application belong to and vest in YoYo Games. All rights of YoYo Games are hereby asserted and reserved. +All trade marks are the property of their respective owners and YoYo Games makes no warranty or representation in respect of and has no responsibility and excludes all liability for any trade mark or third party content. +The rights granted in this license are non-exclusive. +This license does not affect your statutory rights as a consumer. +This License is governed by English Law and the parties submit to the exclusive jurisdiction of the English Courts. +If you have a problem with this Application please contact the person who made it, not YoYo Games. + +Click “ACCEPT” and accept these terms to install and use this Application. If you do not accept them terms you may not continue with the installation and you must not install, use or run this software on this or any other computer. diff --git a/src/gms2/gdash/options/windows/installer/runnerinstaller.nsi b/src/gms2/gdash/options/windows/installer/runnerinstaller.nsi new file mode 100644 index 0000000..cd77b58 --- /dev/null +++ b/src/gms2/gdash/options/windows/installer/runnerinstaller.nsi @@ -0,0 +1,213 @@ +; RunnerInstaller.nsi +; +; This script is based on example1.nsi, but it remember the directory, +; has uninstall support and (optionally) installs start menu shortcuts. +; +; It will install example2.nsi into a directory that the user selects, + +;-------------------------------- +!include MUI2.nsh + +!ifndef FULL_VERSION +!define FULL_VERSION "1.0.0.0" +!endif +!ifndef SOURCE_DIR +!define SOURCE_DIR "C:\source\temp\InstallerTest\runner" +!endif +!ifndef INSTALLER_FILENAME +!define INSTALLER_FILENAME "C:\source\temp\InstallerTest\RunnerInstaller.exe" +!endif + +!ifndef MAKENSIS +!define MAKENSIS "%appdata%\GameMaker-Studio\makensis" +!endif + +!ifndef COMPANY_NAME +!define COMPANY_NAME "" +!endif + +!ifndef COPYRIGHT_TXT +!define COPYRIGHT_TXT "(c)Copyright 2013" +!endif + +!ifndef FILE_DESC +!define FILE_DESC "Created with GameMaker:Studio" +!endif + +!ifndef LICENSE_NAME +!define LICENSE_NAME "License.txt" +!endif + +!ifndef ICON_FILE +!define ICON_FILE "icon.ico" +!endif + +!ifndef IMAGE_FINISHED +!define IMAGE_FINISHED "Runner_finish.bmp" +!endif + +!ifndef IMAGE_HEADER +!define IMAGE_HEADER "Runner_header.bmp" +!endif + +!ifndef PRODUCT_NAME +!define PRODUCT_NAME "Runner" +!endif + +!define APP_NAME "${PRODUCT_NAME}" +!define SHORT_NAME "${PRODUCT_NAME}" + +!ifndef EXE_NAME +!define EXE_NAME "${PRODUCT_NAME}" +!endif + + +;;USAGE: +!define MIN_FRA_MAJOR "2" +!define MIN_FRA_MINOR "0" +!define MIN_FRA_BUILD "*" + +!addplugindir "." + +;-------------------------------- + +; The name of the installer +Name "${APP_NAME}" +Caption "${APP_NAME}" +BrandingText "${APP_NAME}" + +; The file to write +OutFile "${INSTALLER_FILENAME}" + +; The default installation directory +InstallDir "$PROFILE\${APP_NAME}" + +; Registry key to check for directory (so if you install again, it will +; overwrite the old one automatically) +InstallDirRegKey HKCU "Software\Runner" "Install_Dir" + +; Request application privileges for Windows Vista +RequestExecutionLevel admin + + +VIProductVersion "${FULL_VERSION}" +VIAddVersionKey /LANG=1033 "FileVersion" "${FULL_VERSION}" +VIAddVersionKey /LANG=1033 "ProductVersion" "${FULL_VERSION}" +VIAddVersionKey /LANG=1033 "ProductName" "${PRODUCT_NAME}" +VIAddVersionKey /LANG=1033 "CompanyName" "${PRODUCT_PUBLISHER}" +VIAddVersionKey /LANG=1033 "LegalCopyright" "${COPYRIGHT_TXT}" +VIAddVersionKey /LANG=1033 "FileDescription" "${FILE_DESC}" + + + +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH +!define MUI_ICON "${ICON_FILE}" +!define MUI_WELCOMEFINISHPAGE_BITMAP "${IMAGE_FINISHED}" +!define MUI_HEADERIMAGE_BITMAP "${IMAGE_HEADER}" +!define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH + + +;-------------------------------- + +; Pages +!insertmacro MUI_PAGE_LICENSE "${LICENSE_NAME}" +!insertmacro MUI_PAGE_COMPONENTS +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES + # These indented statements modify settings for MUI_PAGE_FINISH + !define MUI_FINISHPAGE_NOAUTOCLOSE + !define MUI_FINISHPAGE_RUN_TEXT "Start ${PRODUCT_NAME}" + !define MUI_FINISHPAGE_RUN "$INSTDIR\${EXE_NAME}.exe" +!insertmacro MUI_PAGE_FINISH + +Var DirectXSetupError + +UninstPage uninstConfirm +UninstPage instfiles + +!insertmacro MUI_LANGUAGE "English" +;-------------------------------- + +; The stuff to install +Section `${APP_NAME}` + SectionIn RO + + ; Set output path to the installation directory. + SetOutPath $INSTDIR + + ; Put file there + File "${LICENSE_NAME}" + File /r "${SOURCE_DIR}\*.*" + + ; Write the uninstall keys for Windows + WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SHORT_NAME}" "DisplayName" "${APP_NAME}" + WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SHORT_NAME}" "UninstallString" '"$INSTDIR\uninstall.exe"' + WriteRegDWORD SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SHORT_NAME}" "NoModify" 1 + WriteRegDWORD SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SHORT_NAME}" "NoRepair" 1 + WriteUninstaller "uninstall.exe" + +SectionEnd + +; Optional section (can be disabled by the user) +Section "Start Menu Shortcuts" + + CreateDirectory "$SMPROGRAMS\${APP_NAME}" + CreateShortCut "$SMPROGRAMS\${APP_NAME}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 + CreateShortCut "$SMPROGRAMS\${APP_NAME}\${APP_NAME}.lnk" "$INSTDIR\${EXE_NAME}.exe" "" "$INSTDIR\${EXE_NAME}.exe" + CreateShortCut "$SMPROGRAMS\${APP_NAME}\${APP_NAME} License.lnk" "notepad.exe" "$INSTDIR\License.txt" + +SectionEnd + + +; Optional section (can be enabled by the user) +Section /o "Desktop shortcut" + + CreateShortCut "$DESKTOP\${APP_NAME}.lnk" "$INSTDIR\${EXE_NAME}.exe" "" + +SectionEnd + + +;-------------------------------- + +; Uninstaller + +Section "Uninstall" + ; Remove registry keys + DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SHORT_NAME}" + + ; Remove files and uninstaller (everything) + RMDir /r "$INSTDIR" + + ; Remove desktop icon + Delete "$DESKTOP\${APP_NAME}.lnk" + + ; Remove shortcuts, if any + Delete "$SMPROGRAMS\${APP_NAME}\*.*" + + ; Remove directories used + RMDir "$SMPROGRAMS\${APP_NAME}" + RMDir "$INSTDIR" + +SectionEnd + + +;-------------------------------- +; +; This should be the LAST section available.... +; +Section "DirectX Install" SEC_DIRECTX + + SectionIn RO + + SetOutPath "$TEMP" + File "${MAKENSIS}\dxwebsetup.exe" + DetailPrint "Running DirectX Setup..." + ExecWait '"$TEMP\dxwebsetup.exe" /Q' $DirectXSetupError + DetailPrint "Finished DirectX Setup" + + Delete "$TEMP\dxwebsetup.exe" + + SetOutPath "$INSTDIR" + +SectionEnd diff --git a/src/gms2/gdash/options/windows/options_windows.yy b/src/gms2/gdash/options/windows/options_windows.yy new file mode 100644 index 0000000..de6de3a --- /dev/null +++ b/src/gms2/gdash/options/windows/options_windows.yy @@ -0,0 +1,37 @@ +{ + "id": "cc98d028-7bdd-4680-85f3-c87a7baa481e", + "modelName": "GMWindowsOptions", + "mvc": "1.0", + "name": "Windows", + "option_windows_allow_fullscreen_switching": true, + "option_windows_borderless": false, + "option_windows_company_info": "", + "option_windows_copyright_info": "", + "option_windows_description_info": "A GameMaker:Studio Game", + "option_windows_display_cursor": true, + "option_windows_display_name": "GameMaker: Studio", + "option_windows_enable_steam": false, + "option_windows_executable_name": "${project_name}", + "option_windows_icon": "${options_dir}\\windows\\runner_icon.ico", + "option_windows_installer_finished": "${options_dir}\\windows\\Runner_finish.bmp", + "option_windows_installer_header": "${options_dir}\\windows\\Runner_header.bmp", + "option_windows_interpolate_pixels": true, + "option_windows_license": "${options_dir}\\windows\\installer\\license.txt", + "option_windows_nsis_file": "${options_dir}\\windows\\installer\\runnerinstaller.nsi", + "option_windows_product_info": "", + "option_windows_resize_window": false, + "option_windows_save_location": 0, + "option_windows_scale": 0, + "option_windows_sleep_margin": 1, + "option_windows_splash_screen": "${options_dir}\\windows\\splash.png", + "option_windows_start_fullscreen": false, + "option_windows_texture_page": "2048x2048", + "option_windows_use_splash": true, + "option_windows_version": { + "build": 0, + "major": 1, + "minor": 0, + "revision": 0 + }, + "option_windows_vsync": false +} \ No newline at end of file diff --git a/src/gms2/gdash/options/windows/runner_icon.ico b/src/gms2/gdash/options/windows/runner_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f6c1b44482db39cf4e33dd78abe7ef75d684ae9f GIT binary patch literal 3774 zcmeH}=~G%~6viJwWK&T=#RUOD!3Bfj!lq&bAx2G%b*YJoSxil0G#ZVGktD_tHF4=X z?M(ZjlMm^1noif5e&}@CnSSYX-~Xb%?|Z#+XTszUXgSR9p68tN@G_ixnE{Z|m&XHo zRpUh-Pz=CDp)E{NSpStFVN1$dn4mRZ1u{*-&Uz$YSUyxf&?-S}5}w zI;ae}P#Gyjc~BKI^iVTOD5iX9N(-Ph8=$oqp|ci2XDdcdRS9zJ6o(0UwdK$^n4x!9 zBA?M{K|!+(1>PzYw%TFvRm0$~fiXY{I$;dCP}Et6;;uTBMBFgNJSdG*`kGL7ycuN! zUP=qf2Pr38QE{pr6~pZ?kN9C8^`mkufXZ=35SED$EN41ko$Q2dDh%8CFznMkuwRbA zF%yO3Y7CBRF;p{V`cP5cNR^1=g>r^(EQc~c;9ARg!i3GXnA)Ut?$jC?b#Ky zKc9u~{p;|3Fb6;5!+H2$+(6(X#sUH#FCxhJ|(2n~Qx%8oT_;ft@5x z!(1jy^$)lhOJj#uv=eeVf1MXo>U%728q)aHce!Q8O`{%NydW+g%YA9==;e-Gt1wes z=jB57RYKP2_kJk~Hn?F_9JqK%+HCuT{S|mA&hYs|(uvf8($v5eLVGQ?2rC z{)Ur<)>JR0=J@cI^tKG})~-2ak|^PhCbW{)1ouBGk+ejq2~|Ad(;=|~)CdnwcdC<8 z$G3`32%l~do3dHnSP>plu`A@VZ8Dz2?PMW!$G>Ww}pC@F$x=k=N2m{R;FQ=t8 zQ9Ie_hH{ZRZe}?Vr+Us~Co%D{1aY|x4ltE!yi?dv;7mkYdd(!oa z{ygCkKS%#MKIX;|L-ODae$gY%LwvYlqP=5W?o{>&{^fMLGz&k%C_6%v;Ks|!C6@10 jNRJhDRe(j4aFm@F0iD(7^VMdHmQ2oUAhUu0zy|&Wl)P#^ literal 0 HcmV?d00001 diff --git a/src/gms2/gdash/options/windows/splash.png b/src/gms2/gdash/options/windows/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..d89882f9972bd73cf9006ed9c86d283d636e8324 GIT binary patch literal 42183 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 literal 0 HcmV?d00001 diff --git a/src/gms2/gdash/rooms/room0/room0.yy b/src/gms2/gdash/rooms/room0/room0.yy new file mode 100644 index 0000000..c38b20c --- /dev/null +++ b/src/gms2/gdash/rooms/room0/room0.yy @@ -0,0 +1,289 @@ +{ + "id": "e80bc793-727b-4912-80cd-2a9381ae60e5", + "modelName": "GMRoom", + "mvc": "1.0", + "name": "room0", + "IsDnD": false, + "creationCodeFile": "", + "inheritCode": false, + "inheritCreationOrder": false, + "inheritLayers": false, + "instanceCreationOrderIDs": [ + "7da7fce4-fc68-45f1-b6cb-2c1ff576e80d" + ], + "layers": [ + { + "__type": "GMRInstanceLayer_Model:#YoYoStudio.MVCFormat", + "id": "d3e0d0ce-096e-467c-9bd7-8e91ec487ba5", + "modelName": "GMRInstanceLayer", + "mvc": "1.0", + "depth": 0, + "hierarchyFrozen": false, + "hierarchyVisible": true, + "inheritLayerDepth": false, + "inheritLayerSettings": false, + "inheritSubLayers": false, + "inheritVisibility": false, + "layers": [ + + ], + "m_parentID": "00000000-0000-0000-0000-000000000000", + "m_serialiseFrozen": false, + "name": "Compatibility_Instances_Depth_0", + "userdefined_depth": true, + "visible": true, + "instances": [ + { + "id": "7da7fce4-fc68-45f1-b6cb-2c1ff576e80d", + "modelName": "GMRInstance", + "mvc": "1.0", + "ignore": false, + "inheritItemSettings": false, + "m_originalParentID": "00000000-0000-0000-0000-000000000000", + "m_serialiseFrozen": false, + "name": "inst_8F536844", + "x": 0, + "y": 0, + "IsDnD": false, + "colour": { + "Value": 4294967295 + }, + "creationCodeFile": "", + "creationCodeType": "", + "inheritCode": false, + "name_with_no_file_rename": "inst_8F536844", + "objId": "75161d65-d380-49da-b5bd-8506f3d3c411", + "rotation": 0, + "scaleX": 1, + "scaleY": 1 + } + ] + }, + { + "__type": "GMRBackgroundLayer_Model:#YoYoStudio.MVCFormat", + "id": "b81e10ba-25f0-469d-9498-f9467fd4df07", + "modelName": "GMRBackgroundLayer", + "mvc": "1.0", + "depth": 2147483600, + "hierarchyFrozen": false, + "hierarchyVisible": true, + "inheritLayerDepth": false, + "inheritLayerSettings": false, + "inheritSubLayers": false, + "inheritVisibility": false, + "layers": [ + + ], + "m_parentID": "00000000-0000-0000-0000-000000000000", + "m_serialiseFrozen": false, + "name": "Compatibility_Colour", + "userdefined_depth": true, + "visible": true, + "animationFPS": 15, + "animationSpeedType": 0, + "colour": { + "Value": 4290822336 + }, + "hspeed": 0, + "htiled": false, + "spriteId": "00000000-0000-0000-0000-000000000000", + "stretch": false, + "userdefined_animFPS": false, + "vspeed": 0, + "vtiled": false, + "x": 0, + "y": 0 + } + ], + "parentId": "00000000-0000-0000-0000-000000000000", + "physicsSettings": { + "id": "43925c0d-066b-4892-a37d-60c88d7a36f5", + "modelName": "GMRoomPhysicsSettings", + "mvc": "1.0", + "PhysicsWorld": false, + "PhysicsWorldGravityX": 0, + "PhysicsWorldGravityY": 10, + "PhysicsWorldPixToMeters": 0.1, + "inheritPhysicsSettings": false + }, + "roomSettings": { + "id": "cd6113a7-e37a-453a-ba0c-269db78d9357", + "modelName": "GMRoomSettings", + "mvc": "1.0", + "Height": 768, + "Width": 1024, + "inheritRoomSettings": false, + "persistent": false + }, + "viewSettings": { + "id": "ddcf3594-0630-4e80-8acc-55f8bb3693f2", + "modelName": "GMRoomViewSettings", + "mvc": "1.0", + "clearDisplayBuffer": true, + "clearViewBackground": true, + "enableViews": false, + "inheritViewSettings": false + }, + "views": [ + { + "id": "d2f97d8e-549b-421e-a3fc-79089ab8327a", + "modelName": "GMRView", + "mvc": "1.0", + "hborder": 32, + "hport": 768, + "hspeed": -1, + "hview": 768, + "inherit": false, + "objId": "00000000-0000-0000-0000-000000000000", + "vborder": 32, + "visible": false, + "vspeed": -1, + "wport": 1024, + "wview": 1024, + "xport": 0, + "xview": 0, + "yport": 0, + "yview": 0 + }, + { + "id": "a079a7a2-5d8c-42d6-8ec4-404f89c5a1f4", + "modelName": "GMRView", + "mvc": "1.0", + "hborder": 32, + "hport": 768, + "hspeed": -1, + "hview": 768, + "inherit": false, + "objId": "00000000-0000-0000-0000-000000000000", + "vborder": 32, + "visible": false, + "vspeed": -1, + "wport": 1024, + "wview": 1024, + "xport": 0, + "xview": 0, + "yport": 0, + "yview": 0 + }, + { + "id": "b5de72b6-fb5b-41f9-b40f-67cf52aa378d", + "modelName": "GMRView", + "mvc": "1.0", + "hborder": 32, + "hport": 768, + "hspeed": -1, + "hview": 768, + "inherit": false, + "objId": "00000000-0000-0000-0000-000000000000", + "vborder": 32, + "visible": false, + "vspeed": -1, + "wport": 1024, + "wview": 1024, + "xport": 0, + "xview": 0, + "yport": 0, + "yview": 0 + }, + { + "id": "ee437268-ac47-4bec-a8d1-70f437c64116", + "modelName": "GMRView", + "mvc": "1.0", + "hborder": 32, + "hport": 768, + "hspeed": -1, + "hview": 768, + "inherit": false, + "objId": "00000000-0000-0000-0000-000000000000", + "vborder": 32, + "visible": false, + "vspeed": -1, + "wport": 1024, + "wview": 1024, + "xport": 0, + "xview": 0, + "yport": 0, + "yview": 0 + }, + { + "id": "2ec528c6-75a7-451b-bd41-32c50d0aaa0e", + "modelName": "GMRView", + "mvc": "1.0", + "hborder": 32, + "hport": 768, + "hspeed": -1, + "hview": 768, + "inherit": false, + "objId": "00000000-0000-0000-0000-000000000000", + "vborder": 32, + "visible": false, + "vspeed": -1, + "wport": 1024, + "wview": 1024, + "xport": 0, + "xview": 0, + "yport": 0, + "yview": 0 + }, + { + "id": "6645c53d-a932-4e3b-8254-4ec636f2ce93", + "modelName": "GMRView", + "mvc": "1.0", + "hborder": 32, + "hport": 768, + "hspeed": -1, + "hview": 768, + "inherit": false, + "objId": "00000000-0000-0000-0000-000000000000", + "vborder": 32, + "visible": false, + "vspeed": -1, + "wport": 1024, + "wview": 1024, + "xport": 0, + "xview": 0, + "yport": 0, + "yview": 0 + }, + { + "id": "5ff29a46-f763-43c8-a13c-b6bf76acfbb9", + "modelName": "GMRView", + "mvc": "1.0", + "hborder": 32, + "hport": 768, + "hspeed": -1, + "hview": 768, + "inherit": false, + "objId": "00000000-0000-0000-0000-000000000000", + "vborder": 32, + "visible": false, + "vspeed": -1, + "wport": 1024, + "wview": 1024, + "xport": 0, + "xview": 0, + "yport": 0, + "yview": 0 + }, + { + "id": "0803d151-a616-40b4-a770-41929e8b1636", + "modelName": "GMRView", + "mvc": "1.0", + "hborder": 32, + "hport": 768, + "hspeed": -1, + "hview": 768, + "inherit": false, + "objId": "00000000-0000-0000-0000-000000000000", + "vborder": 32, + "visible": false, + "vspeed": -1, + "wport": 1024, + "wview": 1024, + "xport": 0, + "xview": 0, + "yport": 0, + "yview": 0 + } + ] +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/@instance_create/instance_create.gml b/src/gms2/gdash/scripts/@instance_create/instance_create.gml new file mode 100644 index 0000000..818b240 --- /dev/null +++ b/src/gms2/gdash/scripts/@instance_create/instance_create.gml @@ -0,0 +1,6 @@ +/// @description Creates an instance of a given object at a given position. +/// @param x The x position the object will be created at. +/// @param y The y position the object will be created at. +/// @param obj The object to create an instance of. +var myDepth = object_get_depth( argument2 ); +return instance_create_depth( argument0, argument1, myDepth, argument2 ); diff --git a/src/gms2/gdash/scripts/@instance_create/instance_create.yy b/src/gms2/gdash/scripts/@instance_create/instance_create.yy new file mode 100644 index 0000000..02bf681 --- /dev/null +++ b/src/gms2/gdash/scripts/@instance_create/instance_create.yy @@ -0,0 +1,8 @@ +{ + "id": "565a36f1-6705-454d-b56c-3f536baa2e0e", + "modelName": "GMScript", + "mvc": "1.0", + "name": "instance_create", + "IsCompatibility": true, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/@object_get_depth/object_get_depth.gml b/src/gms2/gdash/scripts/@object_get_depth/object_get_depth.gml new file mode 100644 index 0000000..7775944 --- /dev/null +++ b/src/gms2/gdash/scripts/@object_get_depth/object_get_depth.gml @@ -0,0 +1,10 @@ +/// @description Returns the depth of the specified object. +/// @param {Number} obj The index of the object to check +/// @return {Number} depth of the object + +var objID = argument0; +var ret = 0; +if (objID >= 0) && (objID < array_length_1d(global.__objectID2Depth)) { + ret = global.__objectID2Depth[objID]; +} // end if +return ret; \ No newline at end of file diff --git a/src/gms2/gdash/scripts/@object_get_depth/object_get_depth.yy b/src/gms2/gdash/scripts/@object_get_depth/object_get_depth.yy new file mode 100644 index 0000000..529ed1e --- /dev/null +++ b/src/gms2/gdash/scripts/@object_get_depth/object_get_depth.yy @@ -0,0 +1,8 @@ +{ + "id": "bd2b952d-8cfc-4ace-9fb7-13e008ec8523", + "modelName": "GMScript", + "mvc": "1.0", + "name": "object_get_depth", + "IsCompatibility": true, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/__add/__add.gml b/src/gms2/gdash/scripts/__add/__add.gml new file mode 100644 index 0000000..5d2294b --- /dev/null +++ b/src/gms2/gdash/scripts/__add/__add.gml @@ -0,0 +1 @@ +return argument0 + argument1; diff --git a/src/gms2/gdash/scripts/__add/__add.yy b/src/gms2/gdash/scripts/__add/__add.yy new file mode 100644 index 0000000..2bd27e6 --- /dev/null +++ b/src/gms2/gdash/scripts/__add/__add.yy @@ -0,0 +1,8 @@ +{ + "id": "71fc0e7e-ac29-4c46-920e-a07621c9158d", + "modelName": "GMScript", + "mvc": "1.0", + "name": "__add", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/__double/__double.gml b/src/gms2/gdash/scripts/__double/__double.gml new file mode 100644 index 0000000..82580fc --- /dev/null +++ b/src/gms2/gdash/scripts/__double/__double.gml @@ -0,0 +1 @@ +return argument0 * 2; diff --git a/src/gms2/gdash/scripts/__double/__double.yy b/src/gms2/gdash/scripts/__double/__double.yy new file mode 100644 index 0000000..c73b9ff --- /dev/null +++ b/src/gms2/gdash/scripts/__double/__double.yy @@ -0,0 +1,8 @@ +{ + "id": "a44c3458-a344-402c-8fd1-6eff64583bc8", + "modelName": "GMScript", + "mvc": "1.0", + "name": "__double", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/__global_object_depths/__global_object_depths.gml b/src/gms2/gdash/scripts/__global_object_depths/__global_object_depths.gml new file mode 100644 index 0000000..49ee95d --- /dev/null +++ b/src/gms2/gdash/scripts/__global_object_depths/__global_object_depths.gml @@ -0,0 +1,21 @@ +// Initialise the global array that allows the lookup of the depth of a given object +// GM2.0 does not have a depth on objects so on import from 1.x a global array is created +// NOTE: MacroExpansion is used to insert the array initialisation at import time +gml_pragma( "global", "__global_object_depths()"); + +// insert the generated arrays here +global.__objectDepths[0] = 0; // obj_gdash_test_1 + + +global.__objectNames[0] = "obj_gdash_test_1"; + + +// create another array that has the correct entries +var len = array_length_1d(global.__objectDepths); +global.__objectID2Depth = []; +for( var i=0; i= 0) { + global.__objectID2Depth[ objID ] = global.__objectDepths[i]; + } // end if +} // end for \ No newline at end of file diff --git a/src/gms2/gdash/scripts/__global_object_depths/__global_object_depths.yy b/src/gms2/gdash/scripts/__global_object_depths/__global_object_depths.yy new file mode 100644 index 0000000..13acae0 --- /dev/null +++ b/src/gms2/gdash/scripts/__global_object_depths/__global_object_depths.yy @@ -0,0 +1,8 @@ +{ + "id": "97727621-bd2b-4624-8c61-db3d2d9bf2dd", + "modelName": "GMScript", + "mvc": "1.0", + "name": "__global_object_depths", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/__greaterThanThree/__greaterThanThree.gml b/src/gms2/gdash/scripts/__greaterThanThree/__greaterThanThree.gml new file mode 100644 index 0000000..d5cdcca --- /dev/null +++ b/src/gms2/gdash/scripts/__greaterThanThree/__greaterThanThree.gml @@ -0,0 +1 @@ +return argument0 > 3; diff --git a/src/gms2/gdash/scripts/__greaterThanThree/__greaterThanThree.yy b/src/gms2/gdash/scripts/__greaterThanThree/__greaterThanThree.yy new file mode 100644 index 0000000..5fbf6c4 --- /dev/null +++ b/src/gms2/gdash/scripts/__greaterThanThree/__greaterThanThree.yy @@ -0,0 +1,8 @@ +{ + "id": "73ab2ea6-b1dd-40ce-9fb0-1356bcff5f3e", + "modelName": "GMScript", + "mvc": "1.0", + "name": "__greaterThanThree", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/__isEven/__isEven.gml b/src/gms2/gdash/scripts/__isEven/__isEven.gml new file mode 100644 index 0000000..49a9fef --- /dev/null +++ b/src/gms2/gdash/scripts/__isEven/__isEven.gml @@ -0,0 +1 @@ +return (argument0 % 2) == 0; diff --git a/src/gms2/gdash/scripts/__isEven/__isEven.yy b/src/gms2/gdash/scripts/__isEven/__isEven.yy new file mode 100644 index 0000000..6c4ae6d --- /dev/null +++ b/src/gms2/gdash/scripts/__isEven/__isEven.yy @@ -0,0 +1,8 @@ +{ + "id": "6674cf91-7ea3-4e59-9ebf-1f0caf512692", + "modelName": "GMScript", + "mvc": "1.0", + "name": "__isEven", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/__sum/__sum.gml b/src/gms2/gdash/scripts/__sum/__sum.gml new file mode 100644 index 0000000..1321e15 --- /dev/null +++ b/src/gms2/gdash/scripts/__sum/__sum.gml @@ -0,0 +1,8 @@ +var total = argument[0]; +var addMe = argument[1]; + +if (_typeOf(total) == "undefined") { + return addMe; +} else { + return total + addMe; +} diff --git a/src/gms2/gdash/scripts/__sum/__sum.yy b/src/gms2/gdash/scripts/__sum/__sum.yy new file mode 100644 index 0000000..02548e8 --- /dev/null +++ b/src/gms2/gdash/scripts/__sum/__sum.yy @@ -0,0 +1,8 @@ +{ + "id": "2e2daba8-4764-4076-8526-b2528785accc", + "modelName": "GMScript", + "mvc": "1.0", + "name": "__sum", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_and/_and.gml b/src/gms2/gdash/scripts/_and/_and.gml new file mode 100644 index 0000000..1ac3f72 --- /dev/null +++ b/src/gms2/gdash/scripts/_and/_and.gml @@ -0,0 +1,15 @@ +/// @desc Returns the value of the provided arguments after a boolean and +/// @param {*} Some first input +/// @param {*} A value to && the first input with +/// @returns {Boolean} The value of the provided arguments after an && +/* +@example +_and(true, true); +// => true + +_and(false, true); +// => false + +*/ +return argument0 && argument1; + diff --git a/src/gms2/gdash/scripts/_and/_and.yy b/src/gms2/gdash/scripts/_and/_and.yy new file mode 100644 index 0000000..ea7e658 --- /dev/null +++ b/src/gms2/gdash/scripts/_and/_and.yy @@ -0,0 +1,8 @@ +{ + "id": "b37db980-06b5-44b7-b0b6-1dca01f04279", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_and", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_arrayOf/_arrayOf.gml b/src/gms2/gdash/scripts/_arrayOf/_arrayOf.gml new file mode 100644 index 0000000..bd7e8d3 --- /dev/null +++ b/src/gms2/gdash/scripts/_arrayOf/_arrayOf.gml @@ -0,0 +1,19 @@ +/// @desc Returns an array of the given arguments. +/// @param 0-14 {*) Values to put into an array +/// @returns {Array} An array of the given parameters +/* +@example +_arrayOf(1, 2, 3); +// => [1, 2, 3]; + +_arrayOf('hello', 'world', 'i', 'am', 'an', 'array'); +// => ['hello', 'world', 'i', 'am', 'an', 'array']; +*/ + +var arr; +for (i = 0; i < argument_count; i++) { + arr[i] = argument[i]; +} + +return arr; + diff --git a/src/gms2/gdash/scripts/_arrayOf/_arrayOf.yy b/src/gms2/gdash/scripts/_arrayOf/_arrayOf.yy new file mode 100644 index 0000000..cfad804 --- /dev/null +++ b/src/gms2/gdash/scripts/_arrayOf/_arrayOf.yy @@ -0,0 +1,8 @@ +{ + "id": "a6902058-42c5-4eb6-8658-c430cfa31c1a", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_arrayOf", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_cloneArray/_cloneArray.gml b/src/gms2/gdash/scripts/_cloneArray/_cloneArray.gml new file mode 100644 index 0000000..b436b3b --- /dev/null +++ b/src/gms2/gdash/scripts/_cloneArray/_cloneArray.gml @@ -0,0 +1,21 @@ +/// @desc Clones a given input array, returning a deep copy. +/// @param {Array} The array to clone +/// @returns {Array} A copy of the input array +/* +@example +var myArray = _arrayOf(1, 2, 3); +var copyArray = _cloneArray(myArray); +_isEqual(myArray, copyArray) +// => true +*/ + +var inputArray = argument0; + +var outputArray; +outputArray[0] = -1; + +for (var i = 0; i < _length(inputArray); i++) { + outputArray[i] = inputArray[i]; +} + +return outputArray; diff --git a/src/gms2/gdash/scripts/_cloneArray/_cloneArray.yy b/src/gms2/gdash/scripts/_cloneArray/_cloneArray.yy new file mode 100644 index 0000000..928eefc --- /dev/null +++ b/src/gms2/gdash/scripts/_cloneArray/_cloneArray.yy @@ -0,0 +1,8 @@ +{ + "id": "024cd91c-bb54-4636-a223-6ba0a8f98e80", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_cloneArray", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_collect/_collect.gml b/src/gms2/gdash/scripts/_collect/_collect.gml new file mode 100644 index 0000000..c0ca047 --- /dev/null +++ b/src/gms2/gdash/scripts/_collect/_collect.gml @@ -0,0 +1,19 @@ +/// @desc Returns an array of all objects of the provided type +/// @param {ObjectType} The object type to collect +/// @returns {Array} An array of all object IDs of the provided type in the room +/* +@example + +_collect(obj_character); +// => [10001, 10002, 10005] +*/ +var result; +var i = 0; + +with (argument0) { + result[i] = id; + i++; +} + +return result; + diff --git a/src/gms2/gdash/scripts/_collect/_collect.yy b/src/gms2/gdash/scripts/_collect/_collect.yy new file mode 100644 index 0000000..1ed72c4 --- /dev/null +++ b/src/gms2/gdash/scripts/_collect/_collect.yy @@ -0,0 +1,8 @@ +{ + "id": "94e9b58c-1b5c-4e05-8348-05e1155444a6", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_collect", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_concat/_concat.gml b/src/gms2/gdash/scripts/_concat/_concat.gml new file mode 100644 index 0000000..2c2617f --- /dev/null +++ b/src/gms2/gdash/scripts/_concat/_concat.gml @@ -0,0 +1,24 @@ +/// @desc Appends the values of one array to another. +/// @param {Array} The array to append to +/// @param {Array} The array to append +/// @returns {Array} The concatenated array +/* +@example +_concat(_arrayOf(0, 1, 2), _arrayOf(3, 4, 5)); +// => [0, 1, 2, 3, 4, 5] + +*/ + +var inputArray = argument[0]; +var appendArray = argument[1]; +var i = _length(inputArray), +var n = 0; + +repeat (_length(appendArray)) { + inputArray[i] = appendArray[n]; + n++; + i++; +} + +return inputArray; + diff --git a/src/gms2/gdash/scripts/_concat/_concat.yy b/src/gms2/gdash/scripts/_concat/_concat.yy new file mode 100644 index 0000000..e2ac26c --- /dev/null +++ b/src/gms2/gdash/scripts/_concat/_concat.yy @@ -0,0 +1,8 @@ +{ + "id": "a4a5b8b5-6a80-4608-8d72-d363ee719bcd", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_concat", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_contains/_contains.gml b/src/gms2/gdash/scripts/_contains/_contains.gml new file mode 100644 index 0000000..61b2a1f --- /dev/null +++ b/src/gms2/gdash/scripts/_contains/_contains.gml @@ -0,0 +1,53 @@ +/// @desc Returns true if the given array contains the given value +/// @param {String|Array|DS_Map} The collection to search +/// @param {*} The value to look for +/// @param {Real} [0] The index to begin looking from +/// @returns {Boolean} True if the collection contains the target, otherwise false +/* +@example +_contains([1, 2, 3], 1); +// => true + +_contains([1, 2, 3], 1, 1); +// => false + +_contains("hello", "ello"); +// => true +*/ + +var collection = argument[0]; +var target = argument[1] +var fromIndex = 0; + +if (argument_count == 3) { + fromIndex = argument[2]; +} + +if (is_string(collection)) { + + // If it is a string, check to see if the target is in the string. + return string_count(string(target), collection) > 0; +} else if (is_array(collection)) { + + // If it is an array, check if target exists in the array. + for (var i = fromIndex; i < _length(collection); i++) { + if (_typeOf(collection[i]) == _typeOf(target) && collection[i] == target) { + return true; + } + } + return false; +} else if (is_real(collection)) { + + // If it is a real, assume it is a ds ID. + if (ds_exists(collection, ds_type_map)) { + var keys = _keys(collection); + for (var i = fromIndex; i < _length(keys); i++) { + var thisValue = ds_map_find_value(collection, keys[i]) + if (_typeOf(thisValue) == _typeOf(target) && thisValue == target) { + return true; + } + } + return false; + } +} + diff --git a/src/gms2/gdash/scripts/_contains/_contains.yy b/src/gms2/gdash/scripts/_contains/_contains.yy new file mode 100644 index 0000000..f8eae16 --- /dev/null +++ b/src/gms2/gdash/scripts/_contains/_contains.yy @@ -0,0 +1,8 @@ +{ + "id": "cf6d1c85-7152-4e6c-9814-5b6fd0a19260", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_contains", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_destroy/_destroy.gml b/src/gms2/gdash/scripts/_destroy/_destroy.gml new file mode 100644 index 0000000..94c82c5 --- /dev/null +++ b/src/gms2/gdash/scripts/_destroy/_destroy.gml @@ -0,0 +1,14 @@ +/// @desc Destroys the passed in instance +/// @param {Instance} The instance to destroy +/* +@example +_destroy(obj_enemy); + +// Destroy all obj_enemy with no health (hasNoHealth is a script) +_map(_filter(_collect(obj_enemy)), hasNoHealth), _destroy); +*/ + +with (argument0) { + instance_destroy(); +} + diff --git a/src/gms2/gdash/scripts/_destroy/_destroy.yy b/src/gms2/gdash/scripts/_destroy/_destroy.yy new file mode 100644 index 0000000..cce9baa --- /dev/null +++ b/src/gms2/gdash/scripts/_destroy/_destroy.yy @@ -0,0 +1,8 @@ +{ + "id": "695b8b1b-7f66-473f-aeb5-5d9f1431c1a5", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_destroy", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_filter/_filter.gml b/src/gms2/gdash/scripts/_filter/_filter.gml new file mode 100644 index 0000000..da148af --- /dev/null +++ b/src/gms2/gdash/scripts/_filter/_filter.gml @@ -0,0 +1,25 @@ +/// @desc Returns an array where values of the input array are truthy when run through the provided function. +/// @param {Array} The array to filter +/// @param {Script} The script to filter with +/// @returns {Array} The filtered array +/* +@example +_filter(_arrayOf(0, 1, 2, 3), lessThanTwo) +// => [0, 1] + +*/ + +var array = argument[0]; +var func = argument[1]; +var result = undefined; +var resultCount = 0; + +for (var i = 0; i < _length(array); i++) { + if (_run(func, array[i])) { + result[resultCount] = array[i]; + resultCount++; + } +} + +return result; + diff --git a/src/gms2/gdash/scripts/_filter/_filter.yy b/src/gms2/gdash/scripts/_filter/_filter.yy new file mode 100644 index 0000000..495ccde --- /dev/null +++ b/src/gms2/gdash/scripts/_filter/_filter.yy @@ -0,0 +1,8 @@ +{ + "id": "10eda2f5-f03f-4f57-83ee-c65c10d22dce", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_filter", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_find/_find.gml b/src/gms2/gdash/scripts/_find/_find.gml new file mode 100644 index 0000000..54417eb --- /dev/null +++ b/src/gms2/gdash/scripts/_find/_find.gml @@ -0,0 +1,16 @@ +/// @desc Iterates over an array, returning the first element that the given script returns true for. +/// @param {Array} The array to iterate over +/// @param {Script} The script to run on the given element +/// @returns {*} The first element that returns truthy from the script +/* +@example +_find(_arrayOf(0, 1, 2, 3), __equalsThree); +// => 3 +*/ + +for (var i = 0; i < _length(argument0); i++) { + if (_run(argument1, argument0[i])) { + return argument0[i]; + } +} + diff --git a/src/gms2/gdash/scripts/_find/_find.yy b/src/gms2/gdash/scripts/_find/_find.yy new file mode 100644 index 0000000..1aa51fe --- /dev/null +++ b/src/gms2/gdash/scripts/_find/_find.yy @@ -0,0 +1,8 @@ +{ + "id": "b340ab46-5d6e-4797-8b0c-07b65051d71d", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_find", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_free/_free.gml b/src/gms2/gdash/scripts/_free/_free.gml new file mode 100644 index 0000000..0d5be7c --- /dev/null +++ b/src/gms2/gdash/scripts/_free/_free.gml @@ -0,0 +1,31 @@ +/// @desc Frees a partial function from memory +/// @param {Real} The partial ID to free +/* +@example +var __sometihng = _partial(someScript, 1); +__something(2); +_free(__something); + +*/ +var dsId = argument[0]; +var type; + +if (argument_count == 1) { + type = ds_type_map; +} else { + type = argument[1]; +} + +if (_isEqual(type, "partial")) { + type = ds_type_map; +} + +switch (type) { + case ds_type_map: + ds_map_destroy(dsId); + break; + case ds_type_list: + ds_list_destroy(dsId); + break; +} + diff --git a/src/gms2/gdash/scripts/_free/_free.yy b/src/gms2/gdash/scripts/_free/_free.yy new file mode 100644 index 0000000..4efee00 --- /dev/null +++ b/src/gms2/gdash/scripts/_free/_free.yy @@ -0,0 +1,8 @@ +{ + "id": "19877baf-f9bd-4216-b356-45c2b3bf122e", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_free", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_get/_get.gml b/src/gms2/gdash/scripts/_get/_get.gml new file mode 100644 index 0000000..badc861 --- /dev/null +++ b/src/gms2/gdash/scripts/_get/_get.gml @@ -0,0 +1,29 @@ +/// @desc Gets a nested value following a dot notation +/// @param {DS_Map} The map to get data from +/// @param {String} The location of the data to get +/// @returns {Mixed} The data found at the given location +/* +@example +// someMap looks like: +// { nested: {three: {deep: 1}}} +_.get(someMap, 'nested.three.deep'); +// => 1 + +*/ + +var map = argument0; +var location = argument1; +var locationArray = _split(location, "."); + +var temp = map; +for (var i = 0; i < _length(locationArray); i++) { + var thisLoc = locationArray[i]; + if (ds_map_exists(temp, thisLoc)) { + temp = temp[? thisLoc]; + } else { + return undefined; + } +} + +return temp; + diff --git a/src/gms2/gdash/scripts/_get/_get.yy b/src/gms2/gdash/scripts/_get/_get.yy new file mode 100644 index 0000000..d14105c --- /dev/null +++ b/src/gms2/gdash/scripts/_get/_get.yy @@ -0,0 +1,8 @@ +{ + "id": "acbe9db1-5a5b-4ce1-944c-58cf842a7935", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_get", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_indexOf/_indexOf.gml b/src/gms2/gdash/scripts/_indexOf/_indexOf.gml new file mode 100644 index 0000000..e4fc206 --- /dev/null +++ b/src/gms2/gdash/scripts/_indexOf/_indexOf.gml @@ -0,0 +1,22 @@ +/// @desc Returns the index of the given item in the given array, or -1 +/// @param {Array|DS_List} The collection to search +/// @param {*} The value to look for +/// @returns {Real} The index of the value, or -1 + +var collection = argument0; +var search = argument1; + +// Search lists +if (is_real(collection)) { + return ds_list_find_index(collection, search); +} + +// Search arrays +for (var i = 0; i < _length(collection); i++) { + if (_isEqual(collection[i], search)) { + return i; + } +} + +return -1; + diff --git a/src/gms2/gdash/scripts/_indexOf/_indexOf.yy b/src/gms2/gdash/scripts/_indexOf/_indexOf.yy new file mode 100644 index 0000000..b0f4675 --- /dev/null +++ b/src/gms2/gdash/scripts/_indexOf/_indexOf.yy @@ -0,0 +1,8 @@ +{ + "id": "cfac0abc-4609-4eae-a2d7-af54980b51fd", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_indexOf", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_isEqual/_isEqual.gml b/src/gms2/gdash/scripts/_isEqual/_isEqual.gml new file mode 100644 index 0000000..485beb1 --- /dev/null +++ b/src/gms2/gdash/scripts/_isEqual/_isEqual.gml @@ -0,0 +1,81 @@ +/// @desc Checks if two values are equal, being safe about type and checking first-level children of ds_lists and ds_maps. Returns false on type inequality rather than throwing an error. +/// @param {*} First value to compare +/// @param {*} Second value to compare +/// @param {ds_type} [Optional] If specified, assumes this type instead of inferring the type. Only specify this if using _isEqual for a ds +/// @returns {Boolean} true if the values are equal, false otherwise +/* +@example + +_isEqual([1, 2, 3], [1, 2, 3]); +// => true + +_isEqual("hello", 1); +// => false + +var map = ds_map_create(); +ds_map_add(map, 'hello', 6); +ds_map_add(map, 'world', 10); +var map2 = ds_map_create(); +ds_map_add(map2, 'hello', 6); +ds_map_add(map2, 'world', 10); +_isEqual(map, map2, ds_type_map); +// => true + +*/ + +var compareA = argument[0]; +var compareB = argument[1]; +var type; + +if (argument_count == 3) { + type = argument[2]; +} else { + if (_typeOf(compareA) != _typeOf(compareB)) { + return false; + } else { + if (_typeOf(compareA) == "array") { + if (_length(compareA) != _length(compareB)) { + return false; + } + + for (var i = 0; i < _length(compareA); i++) { + if (!_isEqual(compareA[i], compareB[i])) { + return false; + } + } + return true; + } else { + return compareA == compareB; + } + } +} + +if (type == ds_type_map) { + var aKeys = _keys(compareA); + var bKeys = _keys(compareB); + if (!_isEqual(aKeys, bKeys)) { + return false; + } + + for (var i = 0; i < _length(aKeys); i++) { + if (!_isEqual(ds_map_find_value(compareA, aKeys[i]), ds_map_find_value(compareB, aKeys[i]))) { + return false; + } + } + + return true; +} else if (type == ds_type_list) { + if (!_isEqual(ds_list_size(compareA), ds_list_size(compareB))) { + return false; + } + + for (var i = 0; i < ds_list_size(compareA); i++) { + if (!_isEqual(ds_list_find_value(compareA, i), ds_list_find_value(compareB, i))) { + return false; + } + } + + return true; + +} + diff --git a/src/gms2/gdash/scripts/_isEqual/_isEqual.yy b/src/gms2/gdash/scripts/_isEqual/_isEqual.yy new file mode 100644 index 0000000..a0a854c --- /dev/null +++ b/src/gms2/gdash/scripts/_isEqual/_isEqual.yy @@ -0,0 +1,8 @@ +{ + "id": "78a96032-6d47-40a1-94e8-dcb78178a134", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_isEqual", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_join/_join.gml b/src/gms2/gdash/scripts/_join/_join.gml new file mode 100644 index 0000000..f2c66a8 --- /dev/null +++ b/src/gms2/gdash/scripts/_join/_join.gml @@ -0,0 +1,33 @@ +/// @desc Returns a string of the given array combined with the given joiner +/// @param {Array} The array to join +/// @param {String} The character to join by +/// @returns {String} The joined array +/* +@example +var arr = _arrayOf('hello', 'world'); +_join(arr, ' '); +// => 'hello world' + +var arr = _arrayOf('Peter', 'Paul', 'Mary'); +_join(arr, ', '); +// => 'Peter, Paul, Mary'; +*/ + +var outString = ""; +var inArray = argument0; +var joiner = argument1; + +var arrLength = _length(inArray); +var maxIndex = arrLength - 1; +var stringJoiner = string(joiner); + +for (var i = 0; i < arrLength; i++) { + outString += string(inArray[i]); + + if (i != maxIndex) { + outString += stringJoiner; + } +} + +return outString; + diff --git a/src/gms2/gdash/scripts/_join/_join.yy b/src/gms2/gdash/scripts/_join/_join.yy new file mode 100644 index 0000000..2706fce --- /dev/null +++ b/src/gms2/gdash/scripts/_join/_join.yy @@ -0,0 +1,8 @@ +{ + "id": "69828e54-01dd-4a2a-b789-7e999d214dca", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_join", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_keys/_keys.gml b/src/gms2/gdash/scripts/_keys/_keys.gml new file mode 100644 index 0000000..a667c5e --- /dev/null +++ b/src/gms2/gdash/scripts/_keys/_keys.gml @@ -0,0 +1,26 @@ +/// @desc Returns an array contains all keys in a ds_map. Order is not guaranteed due to how ds_maps are stored. +/// @param {DS_Map} The map to get the keys from +/// @returns {Array} An array of all keys in the map +/* +@example +var map = ds_map_create(); +ds_map_add(map, 'hello', 'world'); +ds_map_add(map, 'health', 100); + +_keys(map); +// => ['hello', 'health'] + +*/ + +var map = argument0; +var keys; +keys[0] = ds_map_find_first(map); +var nextKey = ds_map_find_next(map, keys[0]); + +while (!is_undefined(nextKey)) { + keys[_length(keys)] = nextKey; + nextKey = ds_map_find_next(map, nextKey); +} + +return keys; + diff --git a/src/gms2/gdash/scripts/_keys/_keys.yy b/src/gms2/gdash/scripts/_keys/_keys.yy new file mode 100644 index 0000000..63df475 --- /dev/null +++ b/src/gms2/gdash/scripts/_keys/_keys.yy @@ -0,0 +1,8 @@ +{ + "id": "f008e78e-dd51-41d2-bb3d-95199a8e7c3c", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_keys", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_length/_length.gml b/src/gms2/gdash/scripts/_length/_length.gml new file mode 100644 index 0000000..ce37c6e --- /dev/null +++ b/src/gms2/gdash/scripts/_length/_length.gml @@ -0,0 +1,26 @@ +/// @desc Returns the length of the given array or ds_list +/// @param {Array|DS_List} The collection to determine the length of +/// @returns {Real} The length of the collection +/* +@example +_length([1, 2, 3, 4]); +// => 4 + +_length(some_list_id_of_size_5); +// => 5 +*/ + +if (is_undefined(argument0)) { + return 0; +} + +if (_typeOf(argument0) == "array") { + return array_length_1d(argument0); +} else if (_typeOf(argument0) == "real" && ds_exists(argument0, ds_type_list)) { + return ds_list_size(argument0); +} else if (_typeOf(argument0) == "string") { + return string_length(argument0); +} + + + diff --git a/src/gms2/gdash/scripts/_length/_length.yy b/src/gms2/gdash/scripts/_length/_length.yy new file mode 100644 index 0000000..9ea9c36 --- /dev/null +++ b/src/gms2/gdash/scripts/_length/_length.yy @@ -0,0 +1,8 @@ +{ + "id": "dbd1ee41-adb8-45ec-b8bd-1098a1541bc0", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_length", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_log/_log.gml b/src/gms2/gdash/scripts/_log/_log.gml new file mode 100644 index 0000000..822ac00 --- /dev/null +++ b/src/gms2/gdash/scripts/_log/_log.gml @@ -0,0 +1,4 @@ +/// @desc Convenience method for show_debug_message(). Automatically convetrs arguments to strings. +/// @param {Mixed} Message The message or value to log +show_debug_message(string(argument0)); + diff --git a/src/gms2/gdash/scripts/_log/_log.yy b/src/gms2/gdash/scripts/_log/_log.yy new file mode 100644 index 0000000..2a4c552 --- /dev/null +++ b/src/gms2/gdash/scripts/_log/_log.yy @@ -0,0 +1,8 @@ +{ + "id": "40753ca5-3efd-4c93-b4b8-ee4bd601c676", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_log", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_map/_map.gml b/src/gms2/gdash/scripts/_map/_map.gml new file mode 100644 index 0000000..7878cc9 --- /dev/null +++ b/src/gms2/gdash/scripts/_map/_map.gml @@ -0,0 +1,51 @@ +/// @desc Iterates over a given collection, running the provided function for each value in the collection. Returns an array of all function results at each index. + +/// @param {Array|DS_Map|DS_List} The collection to map +/// @param {Script} The script to map over the collection +/// @param {ds_type|String} ["array"] The type of collection. Only provide when using a DS +/// @returns {Array} An array of all mapped results +/* +@example + +var arr; +arr[0] = 1; arr[1] = 2; +_map(arr, doubleValue); +// => [2, 4]; + +var map = ds_map_create(); +ds_map_add(map, 'hello', 6); +ds_map_add(map, 'world', 10); +_map(map, divideByTwo, ds_type_map); +// => [3, 5] +*/ + +var collection = argument[0]; +var func = argument[1]; +var type = "array"; + +if (argument_count == 3) { + type = argument[2]; +} + +var resultArray; + +if (_isEqual(type, "array")) { + for (var i = 0; i < _length(collection); i++) { + resultArray[i] = _run(func, collection[i], i); + } + + return resultArray; +} else if (_isEqual(type, ds_type_map)) { + var keys = _keys(collection); + for (var i = 0; i < _length(keys); i++) { + resultArray[i] = _run(func, ds_map_find_value(collection, keys[i]), keys[i]); + } + return resultArray; +} else if (_isEqual(type, ds_type_list)) { + for (var i = 0; i < _length(collection); i++) { + resultArray[i] = _run(func, ds_list_find_value(collection, i), i); + } + return resultArray; +} + + diff --git a/src/gms2/gdash/scripts/_map/_map.yy b/src/gms2/gdash/scripts/_map/_map.yy new file mode 100644 index 0000000..bca7f90 --- /dev/null +++ b/src/gms2/gdash/scripts/_map/_map.yy @@ -0,0 +1,8 @@ +{ + "id": "e873aad6-9ebf-4686-823d-72033eff542a", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_map", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_partial/_partial.gml b/src/gms2/gdash/scripts/_partial/_partial.gml new file mode 100644 index 0000000..ec60154 --- /dev/null +++ b/src/gms2/gdash/scripts/_partial/_partial.gml @@ -0,0 +1,32 @@ +/// @desc Creates a partial function identifier for use in place of raw scripts in gdash functions, or with the use of _run. +/// Partials are to be treated as a data structure, and must be cleaned up with _free() when they are no longer of use. +/// @param {Script} The script to create a partial of +/// @param 1-14 {*} Arguments to bind to the partial +/// @returns {Real} The partial ID (a ds_map, internally) +/* +@example +// Script: lessThan +return argument1 < argument0 + +// Meanwhile... +var lessThanTwo = _partial(lessThan, 2); +lessThanTwo(1); +// => true + +lessThanTwo(10); +// => false + +*/ +var func = argument[0]; +var args; +for (var i = 1; i < argument_count; i++) { + args[i - 1] = argument[i]; +} + +var partial = ds_map_create(); +ds_map_add(partial, "function", func); +ds_map_add(partial, "args", args); +ds_map_add(partial, "partial", "partial"); + +return partial; + diff --git a/src/gms2/gdash/scripts/_partial/_partial.yy b/src/gms2/gdash/scripts/_partial/_partial.yy new file mode 100644 index 0000000..1d91d69 --- /dev/null +++ b/src/gms2/gdash/scripts/_partial/_partial.yy @@ -0,0 +1,8 @@ +{ + "id": "b5cea827-b3fd-48e4-9686-ccb08fd5d898", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_partial", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_push/_push.gml b/src/gms2/gdash/scripts/_push/_push.gml new file mode 100644 index 0000000..ec97a32 --- /dev/null +++ b/src/gms2/gdash/scripts/_push/_push.gml @@ -0,0 +1,16 @@ +/// @desc Adds a value to the end of an array +/// @param {Array} The array to add the value to +/// @param {*} The value to add +/// @returns {Array} The array with the value added +/* +@example +_push(_arrayOf(1, 2), 3); +// => [1, 2, 3] +*/ + +var arr = argument0; +var addMe = argument1; + +arr[_length(arr)] = addMe; +return arr; + diff --git a/src/gms2/gdash/scripts/_push/_push.yy b/src/gms2/gdash/scripts/_push/_push.yy new file mode 100644 index 0000000..df3993f --- /dev/null +++ b/src/gms2/gdash/scripts/_push/_push.yy @@ -0,0 +1,8 @@ +{ + "id": "bd7bc958-28aa-43a9-8251-81041ca0b631", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_push", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_reduce/_reduce.gml b/src/gms2/gdash/scripts/_reduce/_reduce.gml new file mode 100644 index 0000000..21766ca --- /dev/null +++ b/src/gms2/gdash/scripts/_reduce/_reduce.gml @@ -0,0 +1,26 @@ +/// @desc Reduces a collection by iterating over it with a function. Provided script should take 2 arguments: total, value. On the first call, total is undefined. +/// @param {Array} The array to reduce +/// @param {Script} The script to reduce with +/// @returns {*} The reduced value from the given script +/* +@example +var arr = _arrayOf(1, 2, 3, 4, 5); +_reduce(arr, sum); +// => 15 + +var arr = _arrayOf('hello', 'world'); +_reduce(arr, concat); +// => 'helloworld'; +*/ + +var array = argument[0]; +var func = argument[1]; + +var result = _run(func, undefined, array[0]); + +for (var i = 1; i < _length(array); i++) { + result = _run(func, result, array[i]); +} + +return result; + diff --git a/src/gms2/gdash/scripts/_reduce/_reduce.yy b/src/gms2/gdash/scripts/_reduce/_reduce.yy new file mode 100644 index 0000000..f612228 --- /dev/null +++ b/src/gms2/gdash/scripts/_reduce/_reduce.yy @@ -0,0 +1,8 @@ +{ + "id": "477b2a17-84c8-4ddc-ba07-345ab325cd4f", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_reduce", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_run/_run.gml b/src/gms2/gdash/scripts/_run/_run.gml new file mode 100644 index 0000000..320ce3c --- /dev/null +++ b/src/gms2/gdash/scripts/_run/_run.gml @@ -0,0 +1,31 @@ +/// @desc Executes a script or partial with the provided arguments +/// @param {Script|Real} The script to run or the ID of the partial to run +/// @param 1-14 {*} Arguments to pass the script +/// @returns {*} The return value of the script +/* +@example +_run(_add, 1, 2); +// => 3 + +var addTwo = _partial(_add, 2); +_run(addTwo, 1); +// => 3 +*/ + +var func = argument[0]; +var args = undefined; +for (var i = 1; i < argument_count; i++) { + args[i - 1] = argument[i]; +} + +// Check if func is a partial (map with 'partial' set to 'partial'); +if (ds_exists(func, ds_type_map) && _isEqual(ds_map_find_value(func, "partial"), "partial")) { + var partialId = func; + func = ds_map_find_value(partialId, "function"); + args = _concat(ds_map_find_value(partialId, "args"), args); +} + +return _spread(func, args); + + + diff --git a/src/gms2/gdash/scripts/_run/_run.yy b/src/gms2/gdash/scripts/_run/_run.yy new file mode 100644 index 0000000..e11d14d --- /dev/null +++ b/src/gms2/gdash/scripts/_run/_run.yy @@ -0,0 +1,8 @@ +{ + "id": "13bccc1f-b0d5-4ec9-aed0-4ec8f6d5078e", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_run", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_set/_set.gml b/src/gms2/gdash/scripts/_set/_set.gml new file mode 100644 index 0000000..aa638f1 --- /dev/null +++ b/src/gms2/gdash/scripts/_set/_set.gml @@ -0,0 +1,33 @@ +/// @descSets a nested value following a dot notation. Creates along the way if its not set. +/// @param {DS_Map} The map to set data in +/// @param {String} The location of the data to set +/// @param {Mixed} The data to set +/* +@example +// someMap looks like: +// { nested: {three: {deep: 1}}} +_.set(someMap, 'nested.three.deep', 2); +// => someMap now looks like: +// => {nested: {three: {deep: 2}}} + +*/ + +var map = argument0; +var location = argument1; +var value = argument2; +var locationArray = _split(location, "."); +var finalLocation = locationArray[_length(locationArray) - 1]; + +var temp = map; +for (var i = 0; i < _length(locationArray) - 1; i++) { + var thisLoc = locationArray[i]; + var prev = temp; + temp = temp[? thisLoc]; + if (is_undefined(temp)) { + ds_map_add_map(prev, thisLoc, ds_map_create()); + temp = prev[? thisLoc]; + } +} + +temp[? finalLocation] = value; + diff --git a/src/gms2/gdash/scripts/_set/_set.yy b/src/gms2/gdash/scripts/_set/_set.yy new file mode 100644 index 0000000..dc058be --- /dev/null +++ b/src/gms2/gdash/scripts/_set/_set.yy @@ -0,0 +1,8 @@ +{ + "id": "46c29120-6d6b-44ea-86b8-afacfb700cae", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_set", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_split/_split.gml b/src/gms2/gdash/scripts/_split/_split.gml new file mode 100644 index 0000000..936de75 --- /dev/null +++ b/src/gms2/gdash/scripts/_split/_split.gml @@ -0,0 +1,30 @@ +/// @desc Returns an array of strings represnting the given string separated by a given substring +/// @param {String} The string to split +/// @param {String} The character to split by +/// @returns {Array} The split string +/* +@example +_split('Hello, world', ','); +// => ['Hello', ' world'] + +_split('Dogs and cats and mice', ' and '); +// => ['Dogs', 'cats', 'mice'] +*/ + +var inputString = argument0; +var splitter = argument1; +var splitterLength = _length(splitter); +var output; +var count = 0; + +while (string_pos(splitter, inputString) > 0) { + var splitterLocation = string_pos(splitter, inputString); + var part = string_copy(inputString, 1, splitterLocation - 1); + output[count] = part; + count++; + inputString = string_delete(inputString, 1, splitterLocation + _length(splitter) - 1); +} + +output[count] = inputString; +return output; + diff --git a/src/gms2/gdash/scripts/_split/_split.yy b/src/gms2/gdash/scripts/_split/_split.yy new file mode 100644 index 0000000..0a11e98 --- /dev/null +++ b/src/gms2/gdash/scripts/_split/_split.yy @@ -0,0 +1,8 @@ +{ + "id": "a1387e7d-9ef7-458e-8194-e706a534715b", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_split", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_spread/_spread.gml b/src/gms2/gdash/scripts/_spread/_spread.gml new file mode 100644 index 0000000..0e7ec4b --- /dev/null +++ b/src/gms2/gdash/scripts/_spread/_spread.gml @@ -0,0 +1,53 @@ +/// @desc Runs a script with the provided array as arguments +/// Note: This script is disgusting, but useful. +/// @param {Script} The script to run +/// @param {Array} An array to provide as individual arguments +/// @return {*} The return value of the script +/* +@example +_spread(ds_list_add, _arrayOf(listId, 1, 2, 3, 4)); +// => List now contains 1, 2, 3, 4 +*/ + +var func = argument[0]; + +if (is_undefined(argument1)) { + return script_execute(func); +} + +var args = argument[1]; +switch (_length(args)) { + case 1: + return script_execute(func, args[0]); + case 2: + return script_execute(func, args[0], args[1]); + case 3: + return script_execute(func, args[0], args[1], args[2]); + case 4: + return script_execute(func, args[0], args[1], args[2], args[3]); + case 5: + return script_execute(func, args[0], args[1], args[2], args[3], args[4]); + case 6: + return script_execute(func, args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: + return script_execute(func, args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + case 8: + return script_execute(func, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]); + case 9: + return script_execute(func, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]); + case 10: + return script_execute(func, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]); + case 11: + return script_execute(func, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9], args[10]); + case 12: + return script_execute(func, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9], args[10], args[11]); + case 13: + return script_execute(func, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9], args[10], args[11], args[12]); + case 14: + return script_execute(func, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9], args[10], args[11], args[12], args[13]); + case 15: + return script_execute(func, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9], args[10], args[11], args[12], args[13], args[14]); +} + + + diff --git a/src/gms2/gdash/scripts/_spread/_spread.yy b/src/gms2/gdash/scripts/_spread/_spread.yy new file mode 100644 index 0000000..779e632 --- /dev/null +++ b/src/gms2/gdash/scripts/_spread/_spread.yy @@ -0,0 +1,8 @@ +{ + "id": "8d7b1a7b-dadd-486c-9b21-deffc695e159", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_spread", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_times/_times.gml b/src/gms2/gdash/scripts/_times/_times.gml new file mode 100644 index 0000000..89ce3f2 --- /dev/null +++ b/src/gms2/gdash/scripts/_times/_times.gml @@ -0,0 +1,21 @@ +/// @desc Returns an array of the result of a function run the given number of times +/// @param {Real} The number of times to execute the function +/// @param {Script} The script to execute +/// @returns {Array} An array of the script results +/* +@example +_times(3, returnTheValue5); +// => [5, 5, 5]; + +*/ +var count = argument[0]; +var func = argument[1]; + +var arr; + +for (var i = 0; i < count; i++) { + arr[i] = _run(func, i); +} + +return arr; + diff --git a/src/gms2/gdash/scripts/_times/_times.yy b/src/gms2/gdash/scripts/_times/_times.yy new file mode 100644 index 0000000..1eafcec --- /dev/null +++ b/src/gms2/gdash/scripts/_times/_times.yy @@ -0,0 +1,8 @@ +{ + "id": "eeb441d7-af5e-4ceb-a389-32557c90856f", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_times", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_typeOf/_typeOf.gml b/src/gms2/gdash/scripts/_typeOf/_typeOf.gml new file mode 100644 index 0000000..86664c2 --- /dev/null +++ b/src/gms2/gdash/scripts/_typeOf/_typeOf.gml @@ -0,0 +1,38 @@ +/// @desc Returns the variable type of the given argument +/// @param {*} A variable to check the type of +/// @returns {String} The type of the variable as a human readable string +/* +@example + +_typeOf(1); +// => "real" + +_typeOf("hello"); +// => "string" + +var arr; +arr[0] = 1; arr[1] = 2; +_typeOf(arr); +// => "array" + +_typeOf(undefined); +// => "undefined"; + +_typeOf(sprite_get_texture(spr_player, 1)); +// => "pointer"; +*/ + +if (is_string(argument0)) { + return "string"; +} else if (is_array(argument0)) { + return "array"; +} else if (is_ptr(argument0)) { + return "pointer"; +} else if (is_undefined(argument0)) { + return "undefined"; +} else if (is_real(argument0)) { + return "real"; +} + + + diff --git a/src/gms2/gdash/scripts/_typeOf/_typeOf.yy b/src/gms2/gdash/scripts/_typeOf/_typeOf.yy new file mode 100644 index 0000000..bea2c80 --- /dev/null +++ b/src/gms2/gdash/scripts/_typeOf/_typeOf.yy @@ -0,0 +1,8 @@ +{ + "id": "1ba92935-c21d-4159-91a1-0a778afcbcf6", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_typeOf", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/_uniq/_uniq.gml b/src/gms2/gdash/scripts/_uniq/_uniq.gml new file mode 100644 index 0000000..ae2850e --- /dev/null +++ b/src/gms2/gdash/scripts/_uniq/_uniq.gml @@ -0,0 +1,21 @@ +/// @desc Returns an array with all duplicate values removed +/// @param {Array} An array with duplicate values +/// @returns {Array} An array with the duplicate values removed +/* +@example +_uniq(_arrayOf(1, 1, 2, 3)); +// => [1, 2, 3] +*/ + +var arr = argument0; +var result = undefined; + +for (var i = 0; i < _length(arr); i++) { + if (!_contains(result, arr[i])) { + result = _push(result, arr[i]); + } +} + +return result; + + diff --git a/src/gms2/gdash/scripts/_uniq/_uniq.yy b/src/gms2/gdash/scripts/_uniq/_uniq.yy new file mode 100644 index 0000000..8d49565 --- /dev/null +++ b/src/gms2/gdash/scripts/_uniq/_uniq.yy @@ -0,0 +1,8 @@ +{ + "id": "ec3ab82c-0beb-45ba-97e5-236df32ca017", + "modelName": "GMScript", + "mvc": "1.0", + "name": "_uniq", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/assert/assert.gml b/src/gms2/gdash/scripts/assert/assert.gml new file mode 100644 index 0000000..b457f20 --- /dev/null +++ b/src/gms2/gdash/scripts/assert/assert.gml @@ -0,0 +1,21 @@ +/* + * Ensures the passed in argument0 evalutates to argument1. + * If it fails, it will log an error and fail the test. + * + * Example: + * var player = instance_create(0, 0, obj_player); + * player.health = 100; + * hurt_player(10); + * assert(player.health, 90); + */ + +global.testAssertNumber++; +if (argument_count == 1) { + if (argument[0] != true) { + var msg = create_assert_error(string(argument[0]) + " is not true"); + test_fail(msg); + } +} else if (argument[0] != argument[1]) { + var msg = create_assert_error(string(argument[0]) + " is not " + string(argument[1])); + test_fail(msg); +} diff --git a/src/gms2/gdash/scripts/assert/assert.yy b/src/gms2/gdash/scripts/assert/assert.yy new file mode 100644 index 0000000..791848d --- /dev/null +++ b/src/gms2/gdash/scripts/assert/assert.yy @@ -0,0 +1,8 @@ +{ + "id": "d6c7075b-43fa-455a-8242-42de8f43b800", + "modelName": "GMScript", + "mvc": "1.0", + "name": "assert", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/assert_does_not_exist/assert_does_not_exist.gml b/src/gms2/gdash/scripts/assert_does_not_exist/assert_does_not_exist.gml new file mode 100644 index 0000000..61d1f2a --- /dev/null +++ b/src/gms2/gdash/scripts/assert_does_not_exist/assert_does_not_exist.gml @@ -0,0 +1,13 @@ +/* + * Ensures that an instance of the given object exists. + * If it fails, it will log an error and fail the test. + * + * Example: + * kill_boss(); + * assert_does_not_exist(obj_boss); + */ +global.testAssertNumber++; +if (instance_exists(argument0)) { + var msg = create_assert_error(string(argument0) + " should not exist"); + test_fail(msg); +} diff --git a/src/gms2/gdash/scripts/assert_does_not_exist/assert_does_not_exist.yy b/src/gms2/gdash/scripts/assert_does_not_exist/assert_does_not_exist.yy new file mode 100644 index 0000000..2bac38c --- /dev/null +++ b/src/gms2/gdash/scripts/assert_does_not_exist/assert_does_not_exist.yy @@ -0,0 +1,8 @@ +{ + "id": "0901360a-a162-4c78-b640-eb7ae5bd87e1", + "modelName": "GMScript", + "mvc": "1.0", + "name": "assert_does_not_exist", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/assert_exists/assert_exists.gml b/src/gms2/gdash/scripts/assert_exists/assert_exists.gml new file mode 100644 index 0000000..fd70459 --- /dev/null +++ b/src/gms2/gdash/scripts/assert_exists/assert_exists.gml @@ -0,0 +1,13 @@ +/* + * Ensures that an instance of the given object exists. + * If it fails, it will log an error and fail the test. + * + * Example: + * spawn_boss(); + * assert_exists(obj_boss); + */ +global.testAssertNumber++; +if (!instance_exists(argument0)) { + var msg = create_assert_error(string(argument0) + " has no instances"); + test_fail(msg); +} diff --git a/src/gms2/gdash/scripts/assert_exists/assert_exists.yy b/src/gms2/gdash/scripts/assert_exists/assert_exists.yy new file mode 100644 index 0000000..2f87910 --- /dev/null +++ b/src/gms2/gdash/scripts/assert_exists/assert_exists.yy @@ -0,0 +1,8 @@ +{ + "id": "0b6ab207-c224-4f47-915c-8286414f04b1", + "modelName": "GMScript", + "mvc": "1.0", + "name": "assert_exists", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/assert_not/assert_not.gml b/src/gms2/gdash/scripts/assert_not/assert_not.gml new file mode 100644 index 0000000..725e9b9 --- /dev/null +++ b/src/gms2/gdash/scripts/assert_not/assert_not.gml @@ -0,0 +1,21 @@ +/* + * Ensures the passed in argument0 does not evalutate to argument1. + * If it fails, it will log an error and fail the test. + * + * Example: + * var player = instance_create(0, 0, obj_player); + * var previous_health = player.health; + * deal_random_damage(player); + * assert_not(player.health, previous_health); + */ + +global.testAssertNumber++; +if (argument_count == 1) { + if (argument[0] == true) { + var msg = create_assert_error(string(argument[0]) + " shouldn\'t be true"); + test_fail(msg); + } +} else if (argument[0] == argument[1]) { + var msg = create_assert_error(string(argument[0]) + " shouldn\'t be " + string(argument[1])); + test_fail(msg); +} diff --git a/src/gms2/gdash/scripts/assert_not/assert_not.yy b/src/gms2/gdash/scripts/assert_not/assert_not.yy new file mode 100644 index 0000000..cfd0101 --- /dev/null +++ b/src/gms2/gdash/scripts/assert_not/assert_not.yy @@ -0,0 +1,8 @@ +{ + "id": "42399293-59c8-4d21-9b4c-ebca4668426b", + "modelName": "GMScript", + "mvc": "1.0", + "name": "assert_not", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/create_assert_error/create_assert_error.gml b/src/gms2/gdash/scripts/create_assert_error/create_assert_error.gml new file mode 100644 index 0000000..00320fe --- /dev/null +++ b/src/gms2/gdash/scripts/create_assert_error/create_assert_error.gml @@ -0,0 +1,5 @@ +/* + * Helper method for asserts to create standardized error + * messages. Not meant for external use. + */ +return "ASSERT ERROR - " + string(argument0) + " - ASSERT #" + string(global.testAssertNumber); diff --git a/src/gms2/gdash/scripts/create_assert_error/create_assert_error.yy b/src/gms2/gdash/scripts/create_assert_error/create_assert_error.yy new file mode 100644 index 0000000..e91e0f1 --- /dev/null +++ b/src/gms2/gdash/scripts/create_assert_error/create_assert_error.yy @@ -0,0 +1,8 @@ +{ + "id": "37a9a856-63f6-44d9-91f7-ae3bda6f0d00", + "modelName": "GMScript", + "mvc": "1.0", + "name": "create_assert_error", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/describe/describe.gml b/src/gms2/gdash/scripts/describe/describe.gml new file mode 100644 index 0000000..336021f --- /dev/null +++ b/src/gms2/gdash/scripts/describe/describe.gml @@ -0,0 +1,14 @@ +/* + * Sets the description of the currently running test or exits + * if the previous test fails. Use this to define specific tests + * within a given test suite. + * Example: + * describe("Player Death", "The player should die at 0 health"); + */ +if (global.testPassed) { + global.testName = argument0; + global.testDescription = argument1; + global.testCount++; +} else { + game_end(); +} diff --git a/src/gms2/gdash/scripts/describe/describe.yy b/src/gms2/gdash/scripts/describe/describe.yy new file mode 100644 index 0000000..ee7b71c --- /dev/null +++ b/src/gms2/gdash/scripts/describe/describe.yy @@ -0,0 +1,8 @@ +{ + "id": "e0fc46fa-4a3f-4dff-9f7c-bbbacf49757e", + "modelName": "GMScript", + "mvc": "1.0", + "name": "describe", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/info/info.gml b/src/gms2/gdash/scripts/info/info.gml new file mode 100644 index 0000000..d7699f3 --- /dev/null +++ b/src/gms2/gdash/scripts/info/info.gml @@ -0,0 +1,10 @@ +/* + * Simplified logging. Prints all arguments to the output console. + * If you are not using a version of GameMaker with an output console, you + * may want to edit this script to output to a file or something else. + */ +var output = string(argument[0]); +for (var i = 1; i < argument_count; i++) { + output += " " + string(argument[i]) +} +show_debug_message(output); diff --git a/src/gms2/gdash/scripts/info/info.yy b/src/gms2/gdash/scripts/info/info.yy new file mode 100644 index 0000000..222ae74 --- /dev/null +++ b/src/gms2/gdash/scripts/info/info.yy @@ -0,0 +1,8 @@ +{ + "id": "c9e911b4-e0a5-44b2-94f6-6a6dc9106a01", + "modelName": "GMScript", + "mvc": "1.0", + "name": "info", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/int_to_event/int_to_event.gml b/src/gms2/gdash/scripts/int_to_event/int_to_event.gml new file mode 100644 index 0000000..72d9635 --- /dev/null +++ b/src/gms2/gdash/scripts/int_to_event/int_to_event.gml @@ -0,0 +1,60 @@ +/* Converts a number to an ev_user event + + Arguments: + 0 - Event number +*/ + +switch (argument0) { + case 0: + return ev_user0; + break; + case 1: + return ev_user1; + break; + case 2: + return ev_user2; + break; + case 3: + return ev_user3; + break; + case 4: + return ev_user4; + break; + case 5: + return ev_user5; + break; + case 6: + return ev_user6; + break; + case 7: + return ev_user7; + break; + case 8: + return ev_user8; + break; + case 9: + return ev_user9; + break; + case 10: + return ev_user10; + break; + case 11: + return ev_user11; + break; + case 12: + return ev_user12; + break; + case 13: + return ev_user13; + break; + case 14: + return ev_user14; + break; + case 15: + return ev_user15; + break; + default: + return ev_user0; + break; +} + diff --git a/src/gms2/gdash/scripts/int_to_event/int_to_event.yy b/src/gms2/gdash/scripts/int_to_event/int_to_event.yy new file mode 100644 index 0000000..1e552de --- /dev/null +++ b/src/gms2/gdash/scripts/int_to_event/int_to_event.yy @@ -0,0 +1,8 @@ +{ + "id": "a406ae11-12ec-49cd-b1cc-45a333ccd935", + "modelName": "GMScript", + "mvc": "1.0", + "name": "int_to_event", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/macros/macros.gml b/src/gms2/gdash/scripts/macros/macros.gml new file mode 100644 index 0000000..e69de29 diff --git a/src/gms2/gdash/scripts/macros/macros.yy b/src/gms2/gdash/scripts/macros/macros.yy new file mode 100644 index 0000000..9099c91 --- /dev/null +++ b/src/gms2/gdash/scripts/macros/macros.yy @@ -0,0 +1,8 @@ +{ + "id": "6d5ae3be-c018-4481-abe0-66e69da4ed59", + "modelName": "GMScript", + "mvc": "1.0", + "name": "macros", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/test_end/test_end.gml b/src/gms2/gdash/scripts/test_end/test_end.gml new file mode 100644 index 0000000..fb0b60b --- /dev/null +++ b/src/gms2/gdash/scripts/test_end/test_end.gml @@ -0,0 +1,13 @@ +/* + * Concludes an individual test in a test suite. + * If the test passed, prints a success message and moves on + * to the next test, otherwise, fails the test and exits. + */ +if (global.testPassed) { + info("TEST PASSED: " + global.testName); + test_next(); +} else { + info("TEST FAILED: " + global.testName); + info("TEST SUITE FAILED: " + global.testSuiteName); + game_end(); +} diff --git a/src/gms2/gdash/scripts/test_end/test_end.yy b/src/gms2/gdash/scripts/test_end/test_end.yy new file mode 100644 index 0000000..e7f35e3 --- /dev/null +++ b/src/gms2/gdash/scripts/test_end/test_end.yy @@ -0,0 +1,8 @@ +{ + "id": "ba3e7b6b-21ed-494e-971b-cb1b202bd637", + "modelName": "GMScript", + "mvc": "1.0", + "name": "test_end", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/test_fail/test_fail.gml b/src/gms2/gdash/scripts/test_fail/test_fail.gml new file mode 100644 index 0000000..6f10129 --- /dev/null +++ b/src/gms2/gdash/scripts/test_fail/test_fail.gml @@ -0,0 +1,10 @@ +/* + * Fails a test, printing the message and test info. This is used + * internally by asserts, but can also be used to manually fail + * tests if need be. + */ + var msg = argument0; +info(msg); +info("In suite " + global.testSuiteName); +info("In test " + global.testName + ": " + global.testDescription); +global.testPassed = false; diff --git a/src/gms2/gdash/scripts/test_fail/test_fail.yy b/src/gms2/gdash/scripts/test_fail/test_fail.yy new file mode 100644 index 0000000..5c35093 --- /dev/null +++ b/src/gms2/gdash/scripts/test_fail/test_fail.yy @@ -0,0 +1,8 @@ +{ + "id": "0a73cea8-e08e-4ed5-b60e-dbf42d1ac111", + "modelName": "GMScript", + "mvc": "1.0", + "name": "test_fail", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/test_init/test_init.gml b/src/gms2/gdash/scripts/test_init/test_init.gml new file mode 100644 index 0000000..153354b --- /dev/null +++ b/src/gms2/gdash/scripts/test_init/test_init.gml @@ -0,0 +1,10 @@ +/* + * Initializes a test in an empty room + */ +global.testPassed = true; +global.testCount = 0; +global.testSuiteName = argument0; +global.testNumber = 0; +global.testAssertNumber = 0; +info("TESTING SUITE: " + argument0); +test_next(); diff --git a/src/gms2/gdash/scripts/test_init/test_init.yy b/src/gms2/gdash/scripts/test_init/test_init.yy new file mode 100644 index 0000000..e216a30 --- /dev/null +++ b/src/gms2/gdash/scripts/test_init/test_init.yy @@ -0,0 +1,8 @@ +{ + "id": "e811c9f1-b116-489f-940c-6e2575a6fc0b", + "modelName": "GMScript", + "mvc": "1.0", + "name": "test_init", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/test_next/test_next.gml b/src/gms2/gdash/scripts/test_next/test_next.gml new file mode 100644 index 0000000..ab83225 --- /dev/null +++ b/src/gms2/gdash/scripts/test_next/test_next.gml @@ -0,0 +1,7 @@ +/* + * Kicks off the next test in a suite (the next user defined + * action). Used internally in end_test(). Use directly with + * caution, as this is not supported for direct developer use + * within the test automation suite. + */ +event_perform(ev_other, int_to_event(global.testNumber++)); diff --git a/src/gms2/gdash/scripts/test_next/test_next.yy b/src/gms2/gdash/scripts/test_next/test_next.yy new file mode 100644 index 0000000..0ca103b --- /dev/null +++ b/src/gms2/gdash/scripts/test_next/test_next.yy @@ -0,0 +1,8 @@ +{ + "id": "a257ac2f-1258-4606-a6c6-a51a5aaf32b2", + "modelName": "GMScript", + "mvc": "1.0", + "name": "test_next", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/scripts/test_suite_pass/test_suite_pass.gml b/src/gms2/gdash/scripts/test_suite_pass/test_suite_pass.gml new file mode 100644 index 0000000..35b33f6 --- /dev/null +++ b/src/gms2/gdash/scripts/test_suite_pass/test_suite_pass.gml @@ -0,0 +1,12 @@ +/* + * Finishes the test suite and moves on if there are more tests/rooms, + * otherwise, quits. This should be called by itself in the last user + * defined action on your test controller object. + */ +info("TEST SUITE PASSED: " + global.testSuiteName); +if (room != room_last) { + room_goto_next(); +} else { + info("ALL TESTS PASSING"); + game_end(); +} diff --git a/src/gms2/gdash/scripts/test_suite_pass/test_suite_pass.yy b/src/gms2/gdash/scripts/test_suite_pass/test_suite_pass.yy new file mode 100644 index 0000000..f601606 --- /dev/null +++ b/src/gms2/gdash/scripts/test_suite_pass/test_suite_pass.yy @@ -0,0 +1,8 @@ +{ + "id": "dbf428c1-1e51-44a8-81d8-8099f5757ec1", + "modelName": "GMScript", + "mvc": "1.0", + "name": "test_suite_pass", + "IsCompatibility": false, + "IsDnD": false +} \ No newline at end of file diff --git a/src/gms2/gdash/views/03e6bf78-c9fc-4f10-9549-7dc253ca0bfc.yy b/src/gms2/gdash/views/03e6bf78-c9fc-4f10-9549-7dc253ca0bfc.yy new file mode 100644 index 0000000..b9b7f41 --- /dev/null +++ b/src/gms2/gdash/views/03e6bf78-c9fc-4f10-9549-7dc253ca0bfc.yy @@ -0,0 +1,17 @@ +{ + "id": "03e6bf78-c9fc-4f10-9549-7dc253ca0bfc", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "03e6bf78-c9fc-4f10-9549-7dc253ca0bfc", + "children": [ + "a44c3458-a344-402c-8fd1-6eff64583bc8", + "71fc0e7e-ac29-4c46-920e-a07621c9158d", + "2e2daba8-4764-4076-8526-b2528785accc", + "73ab2ea6-b1dd-40ce-9fb0-1356bcff5f3e", + "6674cf91-7ea3-4e59-9ebf-1f0caf512692" + ], + "filterType": "GMScript", + "folderName": "test_functions", + "isDefaultView": false, + "localisedFolderName": "" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/06188c03-8a58-4be1-b30b-7286b73779ee.yy b/src/gms2/gdash/views/06188c03-8a58-4be1-b30b-7286b73779ee.yy new file mode 100644 index 0000000..674e64e --- /dev/null +++ b/src/gms2/gdash/views/06188c03-8a58-4be1-b30b-7286b73779ee.yy @@ -0,0 +1,13 @@ +{ + "id": "06188c03-8a58-4be1-b30b-7286b73779ee", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "06188c03-8a58-4be1-b30b-7286b73779ee", + "children": [ + + ], + "filterType": "GMTileSet", + "folderName": "tilesets", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Tilesets" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/2481bf08-af5f-487f-8ba3-de56222d643f.yy b/src/gms2/gdash/views/2481bf08-af5f-487f-8ba3-de56222d643f.yy new file mode 100644 index 0000000..3a2adc6 --- /dev/null +++ b/src/gms2/gdash/views/2481bf08-af5f-487f-8ba3-de56222d643f.yy @@ -0,0 +1,27 @@ +{ + "id": "2481bf08-af5f-487f-8ba3-de56222d643f", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "2481bf08-af5f-487f-8ba3-de56222d643f", + "children": [ + "3d4c1a45-cb51-440d-93f7-4508fb15da2d", + "06188c03-8a58-4be1-b30b-7286b73779ee", + "aaa232fc-30a0-4c62-950f-a776d3fef239", + "ef1f07da-8677-4904-9251-8af85ce5ae10", + "c180f1aa-9fbf-4693-a798-00a3c87790d1", + "ecfa581b-ebf3-43f2-b17d-cd091ea11541", + "a4eea40d-a933-497b-b91f-7e386fa9a986", + "5f7a0fdf-5764-4afb-8e56-a4e70ee39bd9", + "94736fe3-0d88-4094-9ad3-af09d1fd4782", + "3df7296c-6ac7-4b71-8f67-7202521cb283", + "cfd80378-4324-4b7a-9b8d-fd071e4b1e80", + "47c9dcf3-db98-49b6-b391-9e8d4ad93ccb", + "dc6060fd-690b-4fe2-8ac8-c86faf2e04c0", + "2c55db64-9b48-4e9d-946e-d61128133698", + "411563b4-d20f-4313-8e25-baafa8501c71" + ], + "filterType": "root", + "folderName": "Default", + "isDefaultView": true, + "localisedFolderName": "" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/2c55db64-9b48-4e9d-946e-d61128133698.yy b/src/gms2/gdash/views/2c55db64-9b48-4e9d-946e-d61128133698.yy new file mode 100644 index 0000000..41b7a2a --- /dev/null +++ b/src/gms2/gdash/views/2c55db64-9b48-4e9d-946e-d61128133698.yy @@ -0,0 +1,16 @@ +{ + "id": "2c55db64-9b48-4e9d-946e-d61128133698", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "2c55db64-9b48-4e9d-946e-d61128133698", + "children": [ + "ed6a955d-5826-4f98-a450-10b414266c27", + "a9188620-a624-4a5a-83ae-a1b53faf038b", + "cc98d028-7bdd-4680-85f3-c87a7baa481e", + "f418569b-3bdd-4706-a0e4-364317f54032" + ], + "filterType": "GMOptions", + "folderName": "options", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Options" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/3d4c1a45-cb51-440d-93f7-4508fb15da2d.yy b/src/gms2/gdash/views/3d4c1a45-cb51-440d-93f7-4508fb15da2d.yy new file mode 100644 index 0000000..0ba27bd --- /dev/null +++ b/src/gms2/gdash/views/3d4c1a45-cb51-440d-93f7-4508fb15da2d.yy @@ -0,0 +1,13 @@ +{ + "id": "3d4c1a45-cb51-440d-93f7-4508fb15da2d", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "3d4c1a45-cb51-440d-93f7-4508fb15da2d", + "children": [ + + ], + "filterType": "GMSprite", + "folderName": "sprites", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Sprites" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/3df7296c-6ac7-4b71-8f67-7202521cb283.yy b/src/gms2/gdash/views/3df7296c-6ac7-4b71-8f67-7202521cb283.yy new file mode 100644 index 0000000..c70741c --- /dev/null +++ b/src/gms2/gdash/views/3df7296c-6ac7-4b71-8f67-7202521cb283.yy @@ -0,0 +1,13 @@ +{ + "id": "3df7296c-6ac7-4b71-8f67-7202521cb283", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "3df7296c-6ac7-4b71-8f67-7202521cb283", + "children": [ + "e80bc793-727b-4912-80cd-2a9381ae60e5" + ], + "filterType": "GMRoom", + "folderName": "rooms", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Rooms" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/411563b4-d20f-4313-8e25-baafa8501c71.yy b/src/gms2/gdash/views/411563b4-d20f-4313-8e25-baafa8501c71.yy new file mode 100644 index 0000000..536f674 --- /dev/null +++ b/src/gms2/gdash/views/411563b4-d20f-4313-8e25-baafa8501c71.yy @@ -0,0 +1,13 @@ +{ + "id": "411563b4-d20f-4313-8e25-baafa8501c71", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "411563b4-d20f-4313-8e25-baafa8501c71", + "children": [ + + ], + "filterType": "GMConfig", + "folderName": "configs", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Configs" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/47c9dcf3-db98-49b6-b391-9e8d4ad93ccb.yy b/src/gms2/gdash/views/47c9dcf3-db98-49b6-b391-9e8d4ad93ccb.yy new file mode 100644 index 0000000..6d09db1 --- /dev/null +++ b/src/gms2/gdash/views/47c9dcf3-db98-49b6-b391-9e8d4ad93ccb.yy @@ -0,0 +1,13 @@ +{ + "id": "47c9dcf3-db98-49b6-b391-9e8d4ad93ccb", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "47c9dcf3-db98-49b6-b391-9e8d4ad93ccb", + "children": [ + + ], + "filterType": "GMIncludedFile", + "folderName": "datafiles", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_IncludedFiles" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/4b2720a1-e8f2-435e-b526-fecdfa79b961.yy b/src/gms2/gdash/views/4b2720a1-e8f2-435e-b526-fecdfa79b961.yy new file mode 100644 index 0000000..cce6c9a --- /dev/null +++ b/src/gms2/gdash/views/4b2720a1-e8f2-435e-b526-fecdfa79b961.yy @@ -0,0 +1,25 @@ +{ + "id": "4b2720a1-e8f2-435e-b526-fecdfa79b961", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "4b2720a1-e8f2-435e-b526-fecdfa79b961", + "children": [ + "d6c7075b-43fa-455a-8242-42de8f43b800", + "0901360a-a162-4c78-b640-eb7ae5bd87e1", + "0b6ab207-c224-4f47-915c-8286414f04b1", + "42399293-59c8-4d21-9b4c-ebca4668426b", + "37a9a856-63f6-44d9-91f7-ae3bda6f0d00", + "e0fc46fa-4a3f-4dff-9f7c-bbbacf49757e", + "c9e911b4-e0a5-44b2-94f6-6a6dc9106a01", + "a406ae11-12ec-49cd-b1cc-45a333ccd935", + "ba3e7b6b-21ed-494e-971b-cb1b202bd637", + "0a73cea8-e08e-4ed5-b60e-dbf42d1ac111", + "e811c9f1-b116-489f-940c-6e2575a6fc0b", + "a257ac2f-1258-4606-a6c6-a51a5aaf32b2", + "dbf428c1-1e51-44a8-81d8-8099f5757ec1" + ], + "filterType": "GMScript", + "folderName": "gamatas", + "isDefaultView": false, + "localisedFolderName": "" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/505546f7-b585-45b1-b369-4161fccd19b6.yy b/src/gms2/gdash/views/505546f7-b585-45b1-b369-4161fccd19b6.yy new file mode 100644 index 0000000..cf78dcf --- /dev/null +++ b/src/gms2/gdash/views/505546f7-b585-45b1-b369-4161fccd19b6.yy @@ -0,0 +1,13 @@ +{ + "id": "505546f7-b585-45b1-b369-4161fccd19b6", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "505546f7-b585-45b1-b369-4161fccd19b6", + "children": [ + "565a36f1-6705-454d-b56c-3f536baa2e0e" + ], + "filterType": "GMScript", + "folderName": "instance", + "isDefaultView": false, + "localisedFolderName": "" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/5f7a0fdf-5764-4afb-8e56-a4e70ee39bd9.yy b/src/gms2/gdash/views/5f7a0fdf-5764-4afb-8e56-a4e70ee39bd9.yy new file mode 100644 index 0000000..2b68daf --- /dev/null +++ b/src/gms2/gdash/views/5f7a0fdf-5764-4afb-8e56-a4e70ee39bd9.yy @@ -0,0 +1,13 @@ +{ + "id": "5f7a0fdf-5764-4afb-8e56-a4e70ee39bd9", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "5f7a0fdf-5764-4afb-8e56-a4e70ee39bd9", + "children": [ + + ], + "filterType": "GMTimeline", + "folderName": "timelines", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Timelines" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/64593d4e-15ef-4f3d-8662-12fd73e7efe9.yy b/src/gms2/gdash/views/64593d4e-15ef-4f3d-8662-12fd73e7efe9.yy new file mode 100644 index 0000000..59c4dc4 --- /dev/null +++ b/src/gms2/gdash/views/64593d4e-15ef-4f3d-8662-12fd73e7efe9.yy @@ -0,0 +1,13 @@ +{ + "id": "64593d4e-15ef-4f3d-8662-12fd73e7efe9", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "64593d4e-15ef-4f3d-8662-12fd73e7efe9", + "children": [ + "bd2b952d-8cfc-4ace-9fb7-13e008ec8523" + ], + "filterType": "GMScript", + "folderName": "object", + "isDefaultView": false, + "localisedFolderName": "" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/89db00f9-3361-426a-ba04-cae6a2664a3e.yy b/src/gms2/gdash/views/89db00f9-3361-426a-ba04-cae6a2664a3e.yy new file mode 100644 index 0000000..dd65c6b --- /dev/null +++ b/src/gms2/gdash/views/89db00f9-3361-426a-ba04-cae6a2664a3e.yy @@ -0,0 +1,15 @@ +{ + "id": "89db00f9-3361-426a-ba04-cae6a2664a3e", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "89db00f9-3361-426a-ba04-cae6a2664a3e", + "children": [ + "505546f7-b585-45b1-b369-4161fccd19b6", + "64593d4e-15ef-4f3d-8662-12fd73e7efe9", + "97727621-bd2b-4624-8c61-db3d2d9bf2dd" + ], + "filterType": "GMScript", + "folderName": "compatibility", + "isDefaultView": false, + "localisedFolderName": "" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/8ebd4763-7203-42aa-9554-cc55d03a802b.yy b/src/gms2/gdash/views/8ebd4763-7203-42aa-9554-cc55d03a802b.yy new file mode 100644 index 0000000..d221571 --- /dev/null +++ b/src/gms2/gdash/views/8ebd4763-7203-42aa-9554-cc55d03a802b.yy @@ -0,0 +1,41 @@ +{ + "id": "8ebd4763-7203-42aa-9554-cc55d03a802b", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "8ebd4763-7203-42aa-9554-cc55d03a802b", + "children": [ + "cf6d1c85-7152-4e6c-9814-5b6fd0a19260", + "1ba92935-c21d-4159-91a1-0a778afcbcf6", + "78a96032-6d47-40a1-94e8-dcb78178a134", + "477b2a17-84c8-4ddc-ba07-345ab325cd4f", + "decb6bcf-028b-4e5e-b0dc-deff5f0bc88f", + "eeb441d7-af5e-4ceb-a389-32557c90856f", + "94e9b58c-1b5c-4e05-8348-05e1155444a6", + "10eda2f5-f03f-4f57-83ee-c65c10d22dce", + "a4a5b8b5-6a80-4608-8d72-d363ee719bcd", + "695b8b1b-7f66-473f-aeb5-5d9f1431c1a5", + "b5cea827-b3fd-48e4-9686-ccb08fd5d898", + "a6902058-42c5-4eb6-8658-c430cfa31c1a", + "13bccc1f-b0d5-4ec9-aed0-4ec8f6d5078e", + "bd7bc958-28aa-43a9-8251-81041ca0b631", + "e873aad6-9ebf-4686-823d-72033eff542a", + "ec3ab82c-0beb-45ba-97e5-236df32ca017", + "b37db980-06b5-44b7-b0b6-1dca01f04279", + "b340ab46-5d6e-4797-8b0c-07b65051d71d", + "f008e78e-dd51-41d2-bb3d-95199a8e7c3c", + "19877baf-f9bd-4216-b356-45c2b3bf122e", + "8d7b1a7b-dadd-486c-9b21-deffc695e159", + "dbd1ee41-adb8-45ec-b8bd-1098a1541bc0", + "acbe9db1-5a5b-4ce1-944c-58cf842a7935", + "46c29120-6d6b-44ea-86b8-afacfb700cae", + "40753ca5-3efd-4c93-b4b8-ee4bd601c676", + "cfac0abc-4609-4eae-a2d7-af54980b51fd", + "a1387e7d-9ef7-458e-8194-e706a534715b", + "69828e54-01dd-4a2a-b789-7e999d214dca", + "024cd91c-bb54-4636-a223-6ba0a8f98e80" + ], + "filterType": "GMScript", + "folderName": "gdash", + "isDefaultView": false, + "localisedFolderName": "" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/94736fe3-0d88-4094-9ad3-af09d1fd4782.yy b/src/gms2/gdash/views/94736fe3-0d88-4094-9ad3-af09d1fd4782.yy new file mode 100644 index 0000000..f70db8a --- /dev/null +++ b/src/gms2/gdash/views/94736fe3-0d88-4094-9ad3-af09d1fd4782.yy @@ -0,0 +1,13 @@ +{ + "id": "94736fe3-0d88-4094-9ad3-af09d1fd4782", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "94736fe3-0d88-4094-9ad3-af09d1fd4782", + "children": [ + "e03eb5fc-f39c-4961-9abd-4347303a7909" + ], + "filterType": "GMObject", + "folderName": "objects", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Objects" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/a4eea40d-a933-497b-b91f-7e386fa9a986.yy b/src/gms2/gdash/views/a4eea40d-a933-497b-b91f-7e386fa9a986.yy new file mode 100644 index 0000000..3cc6a9e --- /dev/null +++ b/src/gms2/gdash/views/a4eea40d-a933-497b-b91f-7e386fa9a986.yy @@ -0,0 +1,13 @@ +{ + "id": "a4eea40d-a933-497b-b91f-7e386fa9a986", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "a4eea40d-a933-497b-b91f-7e386fa9a986", + "children": [ + + ], + "filterType": "GMFont", + "folderName": "fonts", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Fonts" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/aaa232fc-30a0-4c62-950f-a776d3fef239.yy b/src/gms2/gdash/views/aaa232fc-30a0-4c62-950f-a776d3fef239.yy new file mode 100644 index 0000000..d44ab57 --- /dev/null +++ b/src/gms2/gdash/views/aaa232fc-30a0-4c62-950f-a776d3fef239.yy @@ -0,0 +1,13 @@ +{ + "id": "aaa232fc-30a0-4c62-950f-a776d3fef239", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "aaa232fc-30a0-4c62-950f-a776d3fef239", + "children": [ + + ], + "filterType": "GMSound", + "folderName": "sounds", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Sounds" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/c180f1aa-9fbf-4693-a798-00a3c87790d1.yy b/src/gms2/gdash/views/c180f1aa-9fbf-4693-a798-00a3c87790d1.yy new file mode 100644 index 0000000..60ddbb3 --- /dev/null +++ b/src/gms2/gdash/views/c180f1aa-9fbf-4693-a798-00a3c87790d1.yy @@ -0,0 +1,17 @@ +{ + "id": "c180f1aa-9fbf-4693-a798-00a3c87790d1", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "c180f1aa-9fbf-4693-a798-00a3c87790d1", + "children": [ + "6d5ae3be-c018-4481-abe0-66e69da4ed59", + "89db00f9-3361-426a-ba04-cae6a2664a3e", + "4b2720a1-e8f2-435e-b526-fecdfa79b961", + "03e6bf78-c9fc-4f10-9549-7dc253ca0bfc", + "8ebd4763-7203-42aa-9554-cc55d03a802b" + ], + "filterType": "GMScript", + "folderName": "scripts", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Scripts" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/cfd80378-4324-4b7a-9b8d-fd071e4b1e80.yy b/src/gms2/gdash/views/cfd80378-4324-4b7a-9b8d-fd071e4b1e80.yy new file mode 100644 index 0000000..d2ccedd --- /dev/null +++ b/src/gms2/gdash/views/cfd80378-4324-4b7a-9b8d-fd071e4b1e80.yy @@ -0,0 +1,14 @@ +{ + "id": "cfd80378-4324-4b7a-9b8d-fd071e4b1e80", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "cfd80378-4324-4b7a-9b8d-fd071e4b1e80", + "children": [ + "6e0279a3-8932-432e-b399-b4c2f985b0c5", + "35170da1-3c2d-439d-ae70-2fcf78b4ca36" + ], + "filterType": "GMNotes", + "folderName": "notes", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Notes" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/dc6060fd-690b-4fe2-8ac8-c86faf2e04c0.yy b/src/gms2/gdash/views/dc6060fd-690b-4fe2-8ac8-c86faf2e04c0.yy new file mode 100644 index 0000000..313105e --- /dev/null +++ b/src/gms2/gdash/views/dc6060fd-690b-4fe2-8ac8-c86faf2e04c0.yy @@ -0,0 +1,13 @@ +{ + "id": "dc6060fd-690b-4fe2-8ac8-c86faf2e04c0", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "dc6060fd-690b-4fe2-8ac8-c86faf2e04c0", + "children": [ + + ], + "filterType": "GMExtension", + "folderName": "extensions", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Extensions" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/e03eb5fc-f39c-4961-9abd-4347303a7909.yy b/src/gms2/gdash/views/e03eb5fc-f39c-4961-9abd-4347303a7909.yy new file mode 100644 index 0000000..957098a --- /dev/null +++ b/src/gms2/gdash/views/e03eb5fc-f39c-4961-9abd-4347303a7909.yy @@ -0,0 +1,13 @@ +{ + "id": "e03eb5fc-f39c-4961-9abd-4347303a7909", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "e03eb5fc-f39c-4961-9abd-4347303a7909", + "children": [ + "75161d65-d380-49da-b5bd-8506f3d3c411" + ], + "filterType": "GMObject", + "folderName": "test_automation", + "isDefaultView": false, + "localisedFolderName": "" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/ecfa581b-ebf3-43f2-b17d-cd091ea11541.yy b/src/gms2/gdash/views/ecfa581b-ebf3-43f2-b17d-cd091ea11541.yy new file mode 100644 index 0000000..f0a84f4 --- /dev/null +++ b/src/gms2/gdash/views/ecfa581b-ebf3-43f2-b17d-cd091ea11541.yy @@ -0,0 +1,13 @@ +{ + "id": "ecfa581b-ebf3-43f2-b17d-cd091ea11541", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "ecfa581b-ebf3-43f2-b17d-cd091ea11541", + "children": [ + + ], + "filterType": "GMShader", + "folderName": "shaders", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Shaders" +} \ No newline at end of file diff --git a/src/gms2/gdash/views/ef1f07da-8677-4904-9251-8af85ce5ae10.yy b/src/gms2/gdash/views/ef1f07da-8677-4904-9251-8af85ce5ae10.yy new file mode 100644 index 0000000..7b954cf --- /dev/null +++ b/src/gms2/gdash/views/ef1f07da-8677-4904-9251-8af85ce5ae10.yy @@ -0,0 +1,13 @@ +{ + "id": "ef1f07da-8677-4904-9251-8af85ce5ae10", + "modelName": "GMFolder", + "mvc": "1.1", + "name": "ef1f07da-8677-4904-9251-8af85ce5ae10", + "children": [ + + ], + "filterType": "GMPath", + "folderName": "paths", + "isDefaultView": false, + "localisedFolderName": "ResourceTree_Paths" +} \ No newline at end of file From 3b2a5cd6edfc11b62d8ae1f2a11421aa496604d8 Mon Sep 17 00:00:00 2001 From: Michael Barrett Date: Wed, 11 Jan 2017 09:27:10 -0500 Subject: [PATCH 2/3] Provide argument names for all gdash scripts --- src/gms2/gdash/objects/obj_gdash_test_1/Other_11.gml | 1 - src/gms2/gdash/scripts/_and/_and.gml | 4 ++-- src/gms2/gdash/scripts/_arrayOf/_arrayOf.gml | 2 +- src/gms2/gdash/scripts/_cloneArray/_cloneArray.gml | 2 +- src/gms2/gdash/scripts/_collect/_collect.gml | 2 +- src/gms2/gdash/scripts/_concat/_concat.gml | 4 ++-- src/gms2/gdash/scripts/_contains/_contains.gml | 6 +++--- src/gms2/gdash/scripts/_destroy/_destroy.gml | 2 +- src/gms2/gdash/scripts/_filter/_filter.gml | 4 ++-- src/gms2/gdash/scripts/_find/_find.gml | 4 ++-- src/gms2/gdash/scripts/_free/_free.gml | 3 ++- src/gms2/gdash/scripts/_get/_get.gml | 4 ++-- src/gms2/gdash/scripts/_indexOf/_indexOf.gml | 4 ++-- src/gms2/gdash/scripts/_isEqual/_isEqual.gml | 4 ++-- src/gms2/gdash/scripts/_join/_join.gml | 4 ++-- src/gms2/gdash/scripts/_keys/_keys.gml | 2 +- src/gms2/gdash/scripts/_length/_length.gml | 2 +- src/gms2/gdash/scripts/_map/_map.gml | 7 +++---- src/gms2/gdash/scripts/_partial/_partial.gml | 4 ++-- src/gms2/gdash/scripts/_push/_push.gml | 4 ++-- src/gms2/gdash/scripts/_reduce/_reduce.gml | 4 ++-- src/gms2/gdash/scripts/_run/_run.gml | 4 ++-- src/gms2/gdash/scripts/_set/_set.gml | 6 +++--- src/gms2/gdash/scripts/_split/_split.gml | 4 ++-- src/gms2/gdash/scripts/_spread/_spread.gml | 4 ++-- src/gms2/gdash/scripts/_times/_times.gml | 4 ++-- src/gms2/gdash/scripts/_typeOf/_typeOf.gml | 2 +- src/gms2/gdash/scripts/_uniq/_uniq.gml | 2 +- 28 files changed, 49 insertions(+), 50 deletions(-) diff --git a/src/gms2/gdash/objects/obj_gdash_test_1/Other_11.gml b/src/gms2/gdash/objects/obj_gdash_test_1/Other_11.gml index 3e2076d..e6e235d 100644 --- a/src/gms2/gdash/objects/obj_gdash_test_1/Other_11.gml +++ b/src/gms2/gdash/objects/obj_gdash_test_1/Other_11.gml @@ -26,4 +26,3 @@ assert(_contains(map, "world"), true); assert(_contains(map, 2), true); ds_map_destroy(map); test_end(); - diff --git a/src/gms2/gdash/scripts/_and/_and.gml b/src/gms2/gdash/scripts/_and/_and.gml index 1ac3f72..7df9917 100644 --- a/src/gms2/gdash/scripts/_and/_and.gml +++ b/src/gms2/gdash/scripts/_and/_and.gml @@ -1,6 +1,6 @@ /// @desc Returns the value of the provided arguments after a boolean and -/// @param {*} Some first input -/// @param {*} A value to && the first input with +/// @param {*} valueA Some first input +/// @param {*} valueB A value to && the first input with /// @returns {Boolean} The value of the provided arguments after an && /* @example diff --git a/src/gms2/gdash/scripts/_arrayOf/_arrayOf.gml b/src/gms2/gdash/scripts/_arrayOf/_arrayOf.gml index bd7e8d3..6519dfe 100644 --- a/src/gms2/gdash/scripts/_arrayOf/_arrayOf.gml +++ b/src/gms2/gdash/scripts/_arrayOf/_arrayOf.gml @@ -1,5 +1,5 @@ /// @desc Returns an array of the given arguments. -/// @param 0-14 {*) Values to put into an array +/// @param {*) values... Values to put into an array /// @returns {Array} An array of the given parameters /* @example diff --git a/src/gms2/gdash/scripts/_cloneArray/_cloneArray.gml b/src/gms2/gdash/scripts/_cloneArray/_cloneArray.gml index b436b3b..56f6575 100644 --- a/src/gms2/gdash/scripts/_cloneArray/_cloneArray.gml +++ b/src/gms2/gdash/scripts/_cloneArray/_cloneArray.gml @@ -1,5 +1,5 @@ /// @desc Clones a given input array, returning a deep copy. -/// @param {Array} The array to clone +/// @param {Array} array The array to clone /// @returns {Array} A copy of the input array /* @example diff --git a/src/gms2/gdash/scripts/_collect/_collect.gml b/src/gms2/gdash/scripts/_collect/_collect.gml index c0ca047..82115a0 100644 --- a/src/gms2/gdash/scripts/_collect/_collect.gml +++ b/src/gms2/gdash/scripts/_collect/_collect.gml @@ -1,5 +1,5 @@ /// @desc Returns an array of all objects of the provided type -/// @param {ObjectType} The object type to collect +/// @param {ObjectType} objectType The object type to collect /// @returns {Array} An array of all object IDs of the provided type in the room /* @example diff --git a/src/gms2/gdash/scripts/_concat/_concat.gml b/src/gms2/gdash/scripts/_concat/_concat.gml index 2c2617f..a9482a2 100644 --- a/src/gms2/gdash/scripts/_concat/_concat.gml +++ b/src/gms2/gdash/scripts/_concat/_concat.gml @@ -1,6 +1,6 @@ /// @desc Appends the values of one array to another. -/// @param {Array} The array to append to -/// @param {Array} The array to append +/// @param {Array} baseArray The array to append to +/// @param {Array} arrayToAppend The array to append /// @returns {Array} The concatenated array /* @example diff --git a/src/gms2/gdash/scripts/_contains/_contains.gml b/src/gms2/gdash/scripts/_contains/_contains.gml index 61b2a1f..b8c142f 100644 --- a/src/gms2/gdash/scripts/_contains/_contains.gml +++ b/src/gms2/gdash/scripts/_contains/_contains.gml @@ -1,7 +1,7 @@ /// @desc Returns true if the given array contains the given value -/// @param {String|Array|DS_Map} The collection to search -/// @param {*} The value to look for -/// @param {Real} [0] The index to begin looking from +/// @param {String|Array|DS_Map} collection The collection to search +/// @param {*} value The value to look for +/// @param {Real} optionalFromIndex [0] The index to begin looking from /// @returns {Boolean} True if the collection contains the target, otherwise false /* @example diff --git a/src/gms2/gdash/scripts/_destroy/_destroy.gml b/src/gms2/gdash/scripts/_destroy/_destroy.gml index 94c82c5..6140dc4 100644 --- a/src/gms2/gdash/scripts/_destroy/_destroy.gml +++ b/src/gms2/gdash/scripts/_destroy/_destroy.gml @@ -1,5 +1,5 @@ /// @desc Destroys the passed in instance -/// @param {Instance} The instance to destroy +/// @param {Instance} instance The instance to destroy /* @example _destroy(obj_enemy); diff --git a/src/gms2/gdash/scripts/_filter/_filter.gml b/src/gms2/gdash/scripts/_filter/_filter.gml index da148af..54ae272 100644 --- a/src/gms2/gdash/scripts/_filter/_filter.gml +++ b/src/gms2/gdash/scripts/_filter/_filter.gml @@ -1,6 +1,6 @@ /// @desc Returns an array where values of the input array are truthy when run through the provided function. -/// @param {Array} The array to filter -/// @param {Script} The script to filter with +/// @param {Array} inputArray The array to filter +/// @param {Script} filterScript The script to filter with /// @returns {Array} The filtered array /* @example diff --git a/src/gms2/gdash/scripts/_find/_find.gml b/src/gms2/gdash/scripts/_find/_find.gml index 54417eb..2777001 100644 --- a/src/gms2/gdash/scripts/_find/_find.gml +++ b/src/gms2/gdash/scripts/_find/_find.gml @@ -1,6 +1,6 @@ /// @desc Iterates over an array, returning the first element that the given script returns true for. -/// @param {Array} The array to iterate over -/// @param {Script} The script to run on the given element +/// @param {Array} array The array to iterate over +/// @param {Script} findScript The script to run on the given element /// @returns {*} The first element that returns truthy from the script /* @example diff --git a/src/gms2/gdash/scripts/_free/_free.gml b/src/gms2/gdash/scripts/_free/_free.gml index 0d5be7c..451a904 100644 --- a/src/gms2/gdash/scripts/_free/_free.gml +++ b/src/gms2/gdash/scripts/_free/_free.gml @@ -1,5 +1,6 @@ /// @desc Frees a partial function from memory -/// @param {Real} The partial ID to free +/// @param {Real} resource The partial ID to free +/// @param {DS_TYPE} optionalType The type of resource to free /* @example var __sometihng = _partial(someScript, 1); diff --git a/src/gms2/gdash/scripts/_get/_get.gml b/src/gms2/gdash/scripts/_get/_get.gml index badc861..3188a67 100644 --- a/src/gms2/gdash/scripts/_get/_get.gml +++ b/src/gms2/gdash/scripts/_get/_get.gml @@ -1,6 +1,6 @@ /// @desc Gets a nested value following a dot notation -/// @param {DS_Map} The map to get data from -/// @param {String} The location of the data to get +/// @param {DS_Map} map The map to get data from +/// @param {String} locationString The location of the data to get /// @returns {Mixed} The data found at the given location /* @example diff --git a/src/gms2/gdash/scripts/_indexOf/_indexOf.gml b/src/gms2/gdash/scripts/_indexOf/_indexOf.gml index e4fc206..57c3d2e 100644 --- a/src/gms2/gdash/scripts/_indexOf/_indexOf.gml +++ b/src/gms2/gdash/scripts/_indexOf/_indexOf.gml @@ -1,6 +1,6 @@ /// @desc Returns the index of the given item in the given array, or -1 -/// @param {Array|DS_List} The collection to search -/// @param {*} The value to look for +/// @param {Array|DS_List} collection The collection to search +/// @param {*} value The value to look for /// @returns {Real} The index of the value, or -1 var collection = argument0; diff --git a/src/gms2/gdash/scripts/_isEqual/_isEqual.gml b/src/gms2/gdash/scripts/_isEqual/_isEqual.gml index 485beb1..6ffb1df 100644 --- a/src/gms2/gdash/scripts/_isEqual/_isEqual.gml +++ b/src/gms2/gdash/scripts/_isEqual/_isEqual.gml @@ -1,6 +1,6 @@ /// @desc Checks if two values are equal, being safe about type and checking first-level children of ds_lists and ds_maps. Returns false on type inequality rather than throwing an error. -/// @param {*} First value to compare -/// @param {*} Second value to compare +/// @param {*} firstValue First value to compare +/// @param {*} secondValue Second value to compare /// @param {ds_type} [Optional] If specified, assumes this type instead of inferring the type. Only specify this if using _isEqual for a ds /// @returns {Boolean} true if the values are equal, false otherwise /* diff --git a/src/gms2/gdash/scripts/_join/_join.gml b/src/gms2/gdash/scripts/_join/_join.gml index f2c66a8..df275cd 100644 --- a/src/gms2/gdash/scripts/_join/_join.gml +++ b/src/gms2/gdash/scripts/_join/_join.gml @@ -1,6 +1,6 @@ /// @desc Returns a string of the given array combined with the given joiner -/// @param {Array} The array to join -/// @param {String} The character to join by +/// @param {Array} array The array to join +/// @param {String} joinChar The character to join by /// @returns {String} The joined array /* @example diff --git a/src/gms2/gdash/scripts/_keys/_keys.gml b/src/gms2/gdash/scripts/_keys/_keys.gml index a667c5e..6315aaf 100644 --- a/src/gms2/gdash/scripts/_keys/_keys.gml +++ b/src/gms2/gdash/scripts/_keys/_keys.gml @@ -1,5 +1,5 @@ /// @desc Returns an array contains all keys in a ds_map. Order is not guaranteed due to how ds_maps are stored. -/// @param {DS_Map} The map to get the keys from +/// @param {DS_Map} map The map to get the keys from /// @returns {Array} An array of all keys in the map /* @example diff --git a/src/gms2/gdash/scripts/_length/_length.gml b/src/gms2/gdash/scripts/_length/_length.gml index ce37c6e..3c29b43 100644 --- a/src/gms2/gdash/scripts/_length/_length.gml +++ b/src/gms2/gdash/scripts/_length/_length.gml @@ -1,5 +1,5 @@ /// @desc Returns the length of the given array or ds_list -/// @param {Array|DS_List} The collection to determine the length of +/// @param {Array|DS_List} collection The collection to determine the length of /// @returns {Real} The length of the collection /* @example diff --git a/src/gms2/gdash/scripts/_map/_map.gml b/src/gms2/gdash/scripts/_map/_map.gml index 7878cc9..6337a0f 100644 --- a/src/gms2/gdash/scripts/_map/_map.gml +++ b/src/gms2/gdash/scripts/_map/_map.gml @@ -1,8 +1,7 @@ /// @desc Iterates over a given collection, running the provided function for each value in the collection. Returns an array of all function results at each index. - -/// @param {Array|DS_Map|DS_List} The collection to map -/// @param {Script} The script to map over the collection -/// @param {ds_type|String} ["array"] The type of collection. Only provide when using a DS +/// @param {Array|DS_Map|DS_List} collection The collection to map +/// @param {Script} script The script to map over the collection +/// @param {ds_type|String} optionalType ["array"] The type of collection. Only provide when using a DS /// @returns {Array} An array of all mapped results /* @example diff --git a/src/gms2/gdash/scripts/_partial/_partial.gml b/src/gms2/gdash/scripts/_partial/_partial.gml index ec60154..a1fd3dd 100644 --- a/src/gms2/gdash/scripts/_partial/_partial.gml +++ b/src/gms2/gdash/scripts/_partial/_partial.gml @@ -1,7 +1,7 @@ /// @desc Creates a partial function identifier for use in place of raw scripts in gdash functions, or with the use of _run. /// Partials are to be treated as a data structure, and must be cleaned up with _free() when they are no longer of use. -/// @param {Script} The script to create a partial of -/// @param 1-14 {*} Arguments to bind to the partial +/// @param {Script} script The script to create a partial of +/// @param {*} partialArguments... Arguments to bind to the partial /// @returns {Real} The partial ID (a ds_map, internally) /* @example diff --git a/src/gms2/gdash/scripts/_push/_push.gml b/src/gms2/gdash/scripts/_push/_push.gml index ec97a32..653df21 100644 --- a/src/gms2/gdash/scripts/_push/_push.gml +++ b/src/gms2/gdash/scripts/_push/_push.gml @@ -1,6 +1,6 @@ /// @desc Adds a value to the end of an array -/// @param {Array} The array to add the value to -/// @param {*} The value to add +/// @param {Array} array The array to add the value to +/// @param {*} value The value to add /// @returns {Array} The array with the value added /* @example diff --git a/src/gms2/gdash/scripts/_reduce/_reduce.gml b/src/gms2/gdash/scripts/_reduce/_reduce.gml index 21766ca..a9344a8 100644 --- a/src/gms2/gdash/scripts/_reduce/_reduce.gml +++ b/src/gms2/gdash/scripts/_reduce/_reduce.gml @@ -1,6 +1,6 @@ /// @desc Reduces a collection by iterating over it with a function. Provided script should take 2 arguments: total, value. On the first call, total is undefined. -/// @param {Array} The array to reduce -/// @param {Script} The script to reduce with +/// @param {Array} inputArray The array to reduce +/// @param {Script} recuderScript The script to reduce with /// @returns {*} The reduced value from the given script /* @example diff --git a/src/gms2/gdash/scripts/_run/_run.gml b/src/gms2/gdash/scripts/_run/_run.gml index 320ce3c..f09c13f 100644 --- a/src/gms2/gdash/scripts/_run/_run.gml +++ b/src/gms2/gdash/scripts/_run/_run.gml @@ -1,6 +1,6 @@ /// @desc Executes a script or partial with the provided arguments -/// @param {Script|Real} The script to run or the ID of the partial to run -/// @param 1-14 {*} Arguments to pass the script +/// @param {Script|Real} scriptOrPartial The script to run or the ID of the partial to run +/// @param {*} arguments... Arguments to pass the script /// @returns {*} The return value of the script /* @example diff --git a/src/gms2/gdash/scripts/_set/_set.gml b/src/gms2/gdash/scripts/_set/_set.gml index aa638f1..e262209 100644 --- a/src/gms2/gdash/scripts/_set/_set.gml +++ b/src/gms2/gdash/scripts/_set/_set.gml @@ -1,7 +1,7 @@ /// @descSets a nested value following a dot notation. Creates along the way if its not set. -/// @param {DS_Map} The map to set data in -/// @param {String} The location of the data to set -/// @param {Mixed} The data to set +/// @param {DS_Map} map The map to set data in +/// @param {String} locationString The location of the data to set +/// @param {Mixed} value The data to set /* @example // someMap looks like: diff --git a/src/gms2/gdash/scripts/_split/_split.gml b/src/gms2/gdash/scripts/_split/_split.gml index 936de75..a2c6761 100644 --- a/src/gms2/gdash/scripts/_split/_split.gml +++ b/src/gms2/gdash/scripts/_split/_split.gml @@ -1,6 +1,6 @@ /// @desc Returns an array of strings represnting the given string separated by a given substring -/// @param {String} The string to split -/// @param {String} The character to split by +/// @param {String} string The string to split +/// @param {String} splitChar The character to split by /// @returns {Array} The split string /* @example diff --git a/src/gms2/gdash/scripts/_spread/_spread.gml b/src/gms2/gdash/scripts/_spread/_spread.gml index 0e7ec4b..dbeccf1 100644 --- a/src/gms2/gdash/scripts/_spread/_spread.gml +++ b/src/gms2/gdash/scripts/_spread/_spread.gml @@ -1,7 +1,7 @@ /// @desc Runs a script with the provided array as arguments /// Note: This script is disgusting, but useful. -/// @param {Script} The script to run -/// @param {Array} An array to provide as individual arguments +/// @param {Script} script The script to run +/// @param {Array} arrayOfArguments An array to provide as individual arguments /// @return {*} The return value of the script /* @example diff --git a/src/gms2/gdash/scripts/_times/_times.gml b/src/gms2/gdash/scripts/_times/_times.gml index 89ce3f2..cb3eb24 100644 --- a/src/gms2/gdash/scripts/_times/_times.gml +++ b/src/gms2/gdash/scripts/_times/_times.gml @@ -1,6 +1,6 @@ /// @desc Returns an array of the result of a function run the given number of times -/// @param {Real} The number of times to execute the function -/// @param {Script} The script to execute +/// @param {Real} executeCount The number of times to execute the function +/// @param {Script} script The script to execute /// @returns {Array} An array of the script results /* @example diff --git a/src/gms2/gdash/scripts/_typeOf/_typeOf.gml b/src/gms2/gdash/scripts/_typeOf/_typeOf.gml index 86664c2..df0bc5e 100644 --- a/src/gms2/gdash/scripts/_typeOf/_typeOf.gml +++ b/src/gms2/gdash/scripts/_typeOf/_typeOf.gml @@ -1,5 +1,5 @@ /// @desc Returns the variable type of the given argument -/// @param {*} A variable to check the type of +/// @param {*} value A variable to check the type of /// @returns {String} The type of the variable as a human readable string /* @example diff --git a/src/gms2/gdash/scripts/_uniq/_uniq.gml b/src/gms2/gdash/scripts/_uniq/_uniq.gml index ae2850e..08197a3 100644 --- a/src/gms2/gdash/scripts/_uniq/_uniq.gml +++ b/src/gms2/gdash/scripts/_uniq/_uniq.gml @@ -1,5 +1,5 @@ /// @desc Returns an array with all duplicate values removed -/// @param {Array} An array with duplicate values +/// @param {Array} array An array with duplicate values /// @returns {Array} An array with the duplicate values removed /* @example From b80d8e5c3bb572e5c4c794ff4d92ce2c1eb21ece Mon Sep 17 00:00:00 2001 From: Michael Barrett Date: Wed, 11 Jan 2017 09:28:11 -0500 Subject: [PATCH 3/3] Remove _object from documentation --- README.md | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/README.md b/README.md index 5533d0d..d0b336a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # gdash - GML utility library -Version 1.3.0 +Version 2.0.0 ## Introduction @@ -30,7 +30,6 @@ Download [the latest release](https://github.com/twisterghost/gdash/releases) an * [_length](#_lengthcollection) * [_log](#_loganything) * [_map](#_mapcolletion-mapscript) -* [_object](#_object) * [_partial](#_partialscript-arg0-arg1--arg13) * [_push](#_pusharray-value) * [_reduce](#_reducecollection-reducerscript) @@ -350,23 +349,6 @@ _map(map, divideByTwo, ds_type_map); // => [3, 5] ``` -### `_object()` - -Returns a blank object - -To use this function, make an object resource called `_gdash_object` - -``` -@param {String} A category to set on this object as the `type` variable -@returns {Instance} A blank object instance - -@example -var data = _object('test'); -data.hello = 'world'; -show_debug_message(data.type); -// => prints "test" -``` - ### `_partial(script, arg0, arg1 ... arg13)` Creates a partial function identifier for use in place of raw scripts in gdash functions, or with the use of _run.