diff --git a/.zed/settings.json b/.zed/settings.json new file mode 100644 index 0000000..04c1a7a --- /dev/null +++ b/.zed/settings.json @@ -0,0 +1,7 @@ +{ + "languages": { + "Odin": { + "format_on_save": "off", + }, + }, +} diff --git a/example/extension/build.sh b/example/extension/build.sh new file mode 100755 index 0000000..c634c2d --- /dev/null +++ b/example/extension/build.sh @@ -0,0 +1,2 @@ +odin build . -build-mode:shared -target:linux_amd64 -o:speed -extra-linker-flags:-fPIC +odin run ../../main.odin -file -- . ../project/extensions/exExtensionTest/exExtensionTest.yy diff --git a/example/extension/extension.so b/example/extension/extension.so new file mode 100755 index 0000000..f19fce9 Binary files /dev/null and b/example/extension/extension.so differ diff --git a/example/extension/main.odin b/example/extension/main.odin new file mode 100644 index 0000000..e6f27a7 --- /dev/null +++ b/example/extension/main.odin @@ -0,0 +1,13 @@ +package main + +import "core:fmt" + +double :: f64 + +@export add :: proc(a, b: double) -> double { + return a + b +} + +@export pass_pointer :: proc(ptr: rawptr) { + fmt.println(ptr) +} diff --git a/example/project/.gitattributes b/example/project/.gitattributes new file mode 100644 index 0000000..0330114 --- /dev/null +++ b/example/project/.gitattributes @@ -0,0 +1,8 @@ +# Ignore .yy files for language statistics +*.yy linguist-generated=true + +# force LF for metadata files for merge simplicity +*.gml text eol=lf +*.yy text eol=lf +*.yyp text eol=lf +*.json text eol=lf \ No newline at end of file diff --git a/example/project/.gitignore b/example/project/.gitignore new file mode 100644 index 0000000..1f4c37f --- /dev/null +++ b/example/project/.gitignore @@ -0,0 +1,62 @@ +# Windows + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# Mac + +## General +.DS_Store +.AppleDouble +.LSOverride + +## Icon must end with two \r +Icon + +## Thumbnails +._* + +## Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +## Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# GameMaker temporary files +*.resource_order +*.old + +# GMRT build directory +Build \ No newline at end of file diff --git a/example/project/extensions/exExtensionTest/exExtensionTest.ext b/example/project/extensions/exExtensionTest/exExtensionTest.ext new file mode 100644 index 0000000..e69de29 diff --git a/example/project/extensions/exExtensionTest/exExtensionTest.yy b/example/project/extensions/exExtensionTest/exExtensionTest.yy new file mode 100644 index 0000000..82bc406 --- /dev/null +++ b/example/project/extensions/exExtensionTest/exExtensionTest.yy @@ -0,0 +1,68 @@ +{ + "$GMExtension":"", + "%Name":"exExtensionTest", + "androidactivityinject":null, + "androidclassname":"", + "androidcodeinjection":"", + "androidinject":null, + "androidmanifestinject":null, + "androidPermissions":[], + "androidProps":false, + "androidsourcedir":"", + "author":"", + "classname":"", + "copyToTargets":-1, + "description":"", + "exportToGame":true, + "extensionVersion":"0.0.1", + "files":[ + {"$GMExtensionFile":"v1","%Name":"","constants":[],"copyToTargets":-1,"filename":"extension.so","final":"","functions":[ + {"$GMExtensionFunction":"","%Name":"add","argCount":0,"args":[2,2,],"documentation":"///@param {real} a\n///@param {real} b\n///@returns {real}\n","externalName":"add","help":"","hidden":false,"kind":1,"name":"add","resourceType":"GMExtensionFunction","resourceVersion":"2.0","returnType":2,}, + {"$GMExtensionFunction":"","%Name":"pass_pointer","argCount":0,"args":[2,],"documentation":"///@param {real} ptr\n","externalName":"pass_pointer","help":"","hidden":false,"kind":1,"name":"pass_pointer","resourceType":"GMExtensionFunction","resourceVersion":"2.0","returnType":0,}, + ],"init":"","kind":1,"name":"","origname":"","ProxyFiles":[],"resourceType":"GMExtensionFile","resourceVersion":"2.0","uncompress":false,"usesRunnerInterface":false,}, + {"$GMExtensionFile":"v1","%Name":"","constants":[],"copyToTargets":-1,"filename":"extension.ext","final":"","functions":[],"init":"","kind":4,"name":"","origname":"","ProxyFiles":[],"resourceType":"GMExtensionFile","resourceVersion":"2.0","uncompress":false,"usesRunnerInterface":false,}, + ], + "gradleinject":null, + "hasConvertedCodeInjection":true, + "helpfile":"", + "HTML5CodeInjection":"", + "html5Props":false, + "IncludedResources":[], + "installdir":"", + "iosCocoaPodDependencies":"", + "iosCocoaPods":"", + "ioscodeinjection":"", + "iosdelegatename":"", + "iosplistinject":null, + "iosProps":false, + "iosSystemFrameworkEntries":[], + "iosThirdPartyFrameworkEntries":[], + "license":"", + "maccompilerflags":"", + "maclinkerflags":"", + "macsourcedir":"", + "name":"exExtensionTest", + "options":[], + "optionsFile":"options.json", + "packageId":"", + "parent":{ + "name":"project", + "path":"project.yyp", + }, + "productId":"", + "resourceType":"GMExtension", + "resourceVersion":"2.0", + "sourcedir":"", + "supportedTargets":-1, + "tvosclassname":null, + "tvosCocoaPodDependencies":"", + "tvosCocoaPods":"", + "tvoscodeinjection":"", + "tvosdelegatename":null, + "tvosmaccompilerflags":"", + "tvosmaclinkerflags":"", + "tvosplistinject":null, + "tvosProps":false, + "tvosSystemFrameworkEntries":[], + "tvosThirdPartyFrameworkEntries":[], +} \ No newline at end of file diff --git a/example/project/extensions/exExtensionTest/extension.so b/example/project/extensions/exExtensionTest/extension.so new file mode 100644 index 0000000..f19fce9 Binary files /dev/null and b/example/project/extensions/exExtensionTest/extension.so differ diff --git a/example/project/objects/objExtensionTest/objExtensionTest.yy b/example/project/objects/objExtensionTest/objExtensionTest.yy new file mode 100644 index 0000000..35bc737 --- /dev/null +++ b/example/project/objects/objExtensionTest/objExtensionTest.yy @@ -0,0 +1,33 @@ +{ + "$GMObject":"", + "%Name":"objExtensionTest", + "eventList":[], + "managed":true, + "name":"objExtensionTest", + "overriddenProperties":[], + "parent":{ + "name":"project", + "path":"project.yyp", + }, + "parentObjectId":null, + "persistent":false, + "physicsAngularDamping":0.1, + "physicsDensity":0.5, + "physicsFriction":0.2, + "physicsGroup":1, + "physicsKinematic":false, + "physicsLinearDamping":0.1, + "physicsObject":false, + "physicsRestitution":0.1, + "physicsSensor":false, + "physicsShape":1, + "physicsShapePoints":[], + "physicsStartAwake":true, + "properties":[], + "resourceType":"GMObject", + "resourceVersion":"2.0", + "solid":false, + "spriteId":null, + "spriteMaskId":null, + "visible":true, +} \ No newline at end of file diff --git a/example/project/options/android/options_android.yy b/example/project/options/android/options_android.yy new file mode 100644 index 0000000..1bcf0be --- /dev/null +++ b/example/project/options/android/options_android.yy @@ -0,0 +1,85 @@ +{ + "$GMAndroidOptions":"v1", + "%Name":"Android", + "name":"Android", + "option_android_application_tag_inject":"", + "option_android_arch_arm64":true, + "option_android_arch_armv7":false, + "option_android_arch_x86_64":false, + "option_android_attribute_allow_backup":false, + "option_android_build_tools":"", + "option_android_compile_sdk":"", + "option_android_device_support":0, + "option_android_display_layout":"LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT", + "option_android_display_name":"project", + "option_android_edge_to_edge_display":false, + "option_android_facebook_app_display_name":"", + "option_android_facebook_id":"", + "option_android_gamepad_support":true, + "option_android_google_apk_expansion":false, + "option_android_google_cloud_saving":false, + "option_android_google_dynamic_asset_delivery":false, + "option_android_google_licensing_public_key":"", + "option_android_google_services_app_id":"", + "option_android_gradle_plugin_version":"8.8.0", + "option_android_gradle_version":"8.10.2", + "option_android_icon_adaptivebg_hdpi":"${base_options_dir}/android/icons_adaptivebg/hdpi.png", + "option_android_icon_adaptivebg_ldpi":"${base_options_dir}/android/icons_adaptivebg/ldpi.png", + "option_android_icon_adaptivebg_mdpi":"${base_options_dir}/android/icons_adaptivebg/mdpi.png", + "option_android_icon_adaptivebg_xhdpi":"${base_options_dir}/android/icons_adaptivebg/xhdpi.png", + "option_android_icon_adaptivebg_xxhdpi":"${base_options_dir}/android/icons_adaptivebg/xxhdpi.png", + "option_android_icon_adaptivebg_xxxhdpi":"${base_options_dir}/android/icons_adaptivebg/xxxhdpi.png", + "option_android_icon_adaptive_generate":false, + "option_android_icon_adaptive_hdpi":"${base_options_dir}/android/icons_adaptive/hdpi.png", + "option_android_icon_adaptive_ldpi":"${base_options_dir}/android/icons_adaptive/ldpi.png", + "option_android_icon_adaptive_mdpi":"${base_options_dir}/android/icons_adaptive/mdpi.png", + "option_android_icon_adaptive_xhdpi":"${base_options_dir}/android/icons_adaptive/xhdpi.png", + "option_android_icon_adaptive_xxhdpi":"${base_options_dir}/android/icons_adaptive/xxhdpi.png", + "option_android_icon_adaptive_xxxhdpi":"${base_options_dir}/android/icons_adaptive/xxxhdpi.png", + "option_android_icon_hdpi":"${base_options_dir}/android/icons/hdpi.png", + "option_android_icon_ldpi":"${base_options_dir}/android/icons/ldpi.png", + "option_android_icon_mdpi":"${base_options_dir}/android/icons/mdpi.png", + "option_android_icon_xhdpi":"${base_options_dir}/android/icons/xhdpi.png", + "option_android_icon_xxhdpi":"${base_options_dir}/android/icons/xxhdpi.png", + "option_android_icon_xxxhdpi":"${base_options_dir}/android/icons/xxxhdpi.png", + "option_android_install_location":0, + "option_android_interpolate_pixels":true, + "option_android_launchscreen_fill":0, + "option_android_lint":false, + "option_android_logcat":"yoyo:V DEBUG:V AndroidRuntime:V", + "option_android_minimum_sdk":"", + "option_android_orient_landscape":true, + "option_android_orient_landscape_flipped":true, + "option_android_orient_portrait":true, + "option_android_orient_portrait_flipped":true, + "option_android_package_company":"company", + "option_android_package_domain":"com", + "option_android_package_product":"game", + "option_android_permission_bluetooth":true, + "option_android_permission_internet":true, + "option_android_permission_network_state":false, + "option_android_permission_read_phone_state":false, + "option_android_permission_record_audio":false, + "option_android_permission_write_external_storage":false, + "option_android_proguard_minifying":false, + "option_android_proguard_shrinking":false, + "option_android_scale":0, + "option_android_screen_depth":0, + "option_android_sleep_margin":4, + "option_android_splashscreen_background_colour":255, + "option_android_splash_screens_landscape":"${base_options_dir}/android/splash/landscape.png", + "option_android_splash_screens_portrait":"${base_options_dir}/android/splash/portrait.png", + "option_android_splash_time":0, + "option_android_support_lib":"", + "option_android_sync_amazon":false, + "option_android_target_sdk":"", + "option_android_texture_page":"2048x2048", + "option_android_tools_from_version":false, + "option_android_tv_banner":"${base_options_dir}/android/tv_banner.png", + "option_android_tv_isgame":true, + "option_android_tv_supports_leanback":true, + "option_android_use_facebook":false, + "option_android_version":"1.0.0.0", + "resourceType":"GMAndroidOptions", + "resourceVersion":"2.0", +} \ No newline at end of file diff --git a/example/project/options/extensions/Extension1.json b/example/project/options/extensions/Extension1.json new file mode 100644 index 0000000..afe75e9 --- /dev/null +++ b/example/project/options/extensions/Extension1.json @@ -0,0 +1,4 @@ +{ + "$GMExtensionConfigSet": "GMExtensionConfigSet", + "configurables": null +} \ No newline at end of file diff --git a/example/project/options/extensions/exExtensionTest.json b/example/project/options/extensions/exExtensionTest.json new file mode 100644 index 0000000..afe75e9 --- /dev/null +++ b/example/project/options/extensions/exExtensionTest.json @@ -0,0 +1,4 @@ +{ + "$GMExtensionConfigSet": "GMExtensionConfigSet", + "configurables": null +} \ No newline at end of file diff --git a/example/project/options/html5/options_html5.yy b/example/project/options/html5/options_html5.yy new file mode 100644 index 0000000..d05fd09 --- /dev/null +++ b/example/project/options/html5/options_html5.yy @@ -0,0 +1,35 @@ +{ + "$GMHtml5Options":"", + "%Name":"HTML5", + "name":"HTML5", + "option_html5_allow_fullscreen":true, + "option_html5_browser_title":"project", + "option_html5_centregame":false, + "option_html5_display_cursor":true, + "option_html5_facebook_app_display_name":"", + "option_html5_facebook_id":"", + "option_html5_flurry_enable":false, + "option_html5_flurry_id":"", + "option_html5_foldername":"html5game", + "option_html5_google_analytics_enable":false, + "option_html5_google_tracking_id":"", + "option_html5_icon":"${base_options_dir}/html5/fav.ico", + "option_html5_index":"", + "option_html5_interpolate_pixels":true, + "option_html5_jsprepend":"", + "option_html5_loadingbar":"", + "option_html5_localrunalert":true, + "option_html5_outputdebugtoconsole":true, + "option_html5_outputname":"index.html", + "option_html5_scale":0, + "option_html5_splash_png":"${base_options_dir}/html5/splash.png", + "option_html5_texture_page":"2048x2048", + "option_html5_usebuiltinfont":true, + "option_html5_usebuiltinparticles":true, + "option_html5_usesplash":false, + "option_html5_use_facebook":false, + "option_html5_version":"1.0.0.0", + "option_html5_webgl":2, + "resourceType":"GMHtml5Options", + "resourceVersion":"2.0", +} \ No newline at end of file diff --git a/example/project/options/ios/options_ios.yy b/example/project/options/ios/options_ios.yy new file mode 100644 index 0000000..75de0de --- /dev/null +++ b/example/project/options/ios/options_ios.yy @@ -0,0 +1,49 @@ +{ + "$GMiOSOptions":"v1", + "%Name":"iOS", + "name":"iOS", + "option_ios_build_number":0, + "option_ios_bundle_name":"com.company.game", + "option_ios_defer_home_indicator":false, + "option_ios_devices":2, + "option_ios_display_name":"project", + "option_ios_enable_broadcast":false, + "option_ios_half_ipad1_textures":false, + "option_ios_icon_ipad_app_152":"${base_options_dir}/ios/icons/app/ipad_152.png", + "option_ios_icon_ipad_app_76":"${base_options_dir}/ios/icons/app/ipad_76.png", + "option_ios_icon_ipad_notification_20":"${base_options_dir}/ios/icons/notification/ipad_20.png", + "option_ios_icon_ipad_notification_40":"${base_options_dir}/ios/icons/notification/ipad_40.png", + "option_ios_icon_ipad_pro_app_167":"${base_options_dir}/ios/icons/app/ipad_pro_167.png", + "option_ios_icon_ipad_settings_29":"${base_options_dir}/ios/icons/settings/ipad_29.png", + "option_ios_icon_ipad_settings_58":"${base_options_dir}/ios/icons/settings/ipad_58.png", + "option_ios_icon_ipad_spotlight_40":"${base_options_dir}/ios/icons/spotlight/ipad_40.png", + "option_ios_icon_ipad_spotlight_80":"${base_options_dir}/ios/icons/spotlight/ipad_80.png", + "option_ios_icon_iphone_app_120":"${base_options_dir}/ios/icons/app/iphone_120.png", + "option_ios_icon_iphone_app_180":"${base_options_dir}/ios/icons/app/iphone_180.png", + "option_ios_icon_iphone_notification_40":"${base_options_dir}/ios/icons/notification/iphone_40.png", + "option_ios_icon_iphone_notification_60":"${base_options_dir}/ios/icons/notification/iphone_60.png", + "option_ios_icon_iphone_settings_58":"${base_options_dir}/ios/icons/settings/iphone_58.png", + "option_ios_icon_iphone_settings_87":"${base_options_dir}/ios/icons/settings/iphone_87.png", + "option_ios_icon_iphone_spotlight_120":"${base_options_dir}/ios/icons/spotlight/iphone_120.png", + "option_ios_icon_iphone_spotlight_80":"${base_options_dir}/ios/icons/spotlight/iphone_80.png", + "option_ios_icon_itunes_artwork_1024":"${base_options_dir}/ios/icons/itunes/itunes_1024.png", + "option_ios_interpolate_pixels":true, + "option_ios_launchscreen_fill":0, + "option_ios_launchscreen_image":"${base_options_dir}/ios/splash/launchscreen.png", + "option_ios_launchscreen_image_landscape":"${base_options_dir}/ios/splash/launchscreen-landscape.png", + "option_ios_min_version":"10.0", + "option_ios_orientation_landscape":true, + "option_ios_orientation_landscape_flipped":true, + "option_ios_orientation_portrait":true, + "option_ios_orientation_portrait_flipped":true, + "option_ios_output_dir":"~/gamemakerstudio2", + "option_ios_podfile_lock_path":"${options_dir}/ios/Podfile.lock", + "option_ios_podfile_path":"${options_dir}/ios/Podfile", + "option_ios_scale":0, + "option_ios_splashscreen_background_colour":255, + "option_ios_team_id":"", + "option_ios_texture_page":"2048x2048", + "option_ios_version":"1.0.0.0", + "resourceType":"GMiOSOptions", + "resourceVersion":"2.0", +} \ No newline at end of file diff --git a/example/project/options/linux/options_linux.yy b/example/project/options/linux/options_linux.yy new file mode 100644 index 0000000..ce4ab6b --- /dev/null +++ b/example/project/options/linux/options_linux.yy @@ -0,0 +1,26 @@ +{ + "$GMLinuxOptions":"", + "%Name":"Linux", + "name":"Linux", + "option_linux_allow_fullscreen":false, + "option_linux_disable_sandbox":false, + "option_linux_display_cursor":true, + "option_linux_display_name":"project", + "option_linux_display_splash":false, + "option_linux_enable_steam":false, + "option_linux_homepage":"http://www.yoyogames.com", + "option_linux_icon":"${base_options_dir}/linux/icons/64.png", + "option_linux_interpolate_pixels":true, + "option_linux_long_desc":"", + "option_linux_maintainer_email":"", + "option_linux_resize_window":false, + "option_linux_scale":0, + "option_linux_short_desc":"", + "option_linux_splash_screen":"${base_options_dir}/linux/splash/splash.png", + "option_linux_start_fullscreen":false, + "option_linux_sync":true, + "option_linux_texture_page":"2048x2048", + "option_linux_version":"1.0.0.0", + "resourceType":"GMLinuxOptions", + "resourceVersion":"2.0", +} \ No newline at end of file diff --git a/example/project/options/mac/options_mac.yy b/example/project/options/mac/options_mac.yy new file mode 100644 index 0000000..0d43e7d --- /dev/null +++ b/example/project/options/mac/options_mac.yy @@ -0,0 +1,38 @@ +{ + "$GMMacOptions":"", + "%Name":"macOS", + "name":"macOS", + "option_mac_allow_fullscreen":false, + "option_mac_allow_incoming_network":false, + "option_mac_allow_outgoing_network":false, + "option_mac_apple_sign_in":false, + "option_mac_app_category":"Games", + "option_mac_app_id":"com.company.game", + "option_mac_arm64":true, + "option_mac_build_app_store":false, + "option_mac_build_number":0, + "option_mac_copyright":"", + "option_mac_disable_sandbox":false, + "option_mac_display_cursor":true, + "option_mac_display_name":"project", + "option_mac_enable_retina":false, + "option_mac_enable_steam":false, + "option_mac_icon_png":"${base_options_dir}/mac/icons/1024.png", + "option_mac_installer_background_png":"${base_options_dir}/mac/splash/installer_background.png", + "option_mac_interpolate_pixels":true, + "option_mac_menu_dock":false, + "option_mac_min_version":"10.10", + "option_mac_output_dir":"~/gamemakerstudio2", + "option_mac_resize_window":false, + "option_mac_scale":0, + "option_mac_signing_identity":"Developer ID Application:", + "option_mac_splash_png":"${base_options_dir}/mac/splash/splash.png", + "option_mac_start_fullscreen":false, + "option_mac_team_id":"", + "option_mac_texture_page":"2048x2048", + "option_mac_version":"1.0.0.0", + "option_mac_vsync":true, + "option_mac_x86_64":true, + "resourceType":"GMMacOptions", + "resourceVersion":"2.0", +} \ No newline at end of file diff --git a/example/project/options/main/options_main.yy b/example/project/options/main/options_main.yy new file mode 100644 index 0000000..e62e5c6 --- /dev/null +++ b/example/project/options/main/options_main.yy @@ -0,0 +1,29 @@ +{ + "$GMMainOptions":"v5", + "%Name":"Main", + "name":"Main", + "option_allow_instance_change":false, + "option_audio_error_behaviour":false, + "option_author":"", + "option_collision_compatibility":false, + "option_copy_on_write_enabled":false, + "option_draw_colour":4294967295, + "option_gameguid":"8f80dbf2-43b8-4294-89db-c739f4e4e84a", + "option_gameid":"0", + "option_game_speed":60, + "option_legacy_json_parsing":false, + "option_legacy_number_conversion":false, + "option_legacy_other_behaviour":false, + "option_legacy_primitive_drawing":false, + "option_mips_for_3d_textures":false, + "option_remove_unused_assets":true, + "option_sci_usesci":false, + "option_spine_licence":false, + "option_steam_app_id":"0", + "option_template_description":null, + "option_template_icon":"${base_options_dir}/main/template_icon.png", + "option_template_image":"${base_options_dir}/main/template_image.png", + "option_window_colour":255, + "resourceType":"GMMainOptions", + "resourceVersion":"2.0", +} \ No newline at end of file diff --git a/example/project/options/operagx/options_operagx.yy b/example/project/options/operagx/options_operagx.yy new file mode 100644 index 0000000..2500db3 --- /dev/null +++ b/example/project/options/operagx/options_operagx.yy @@ -0,0 +1,30 @@ +{ + "$GMOperaGXOptions":"v1", + "%Name":"Opera GX", + "name":"Opera GX", + "option_operagx_display_cursor":true, + "option_operagx_editUrl":"", + "option_operagx_game_name":"${project_name}", + "option_operagx_guid":"", + "option_operagx_internalShareUrl":"", + "option_operagx_interpolate_pixels":true, + "option_operagx_mod_editUrl":"", + "option_operagx_mod_game_name":"${project_name}", + "option_operagx_mod_guid":"", + "option_operagx_mod_internalShareUrl":"", + "option_operagx_mod_next_version":"1.0.0.0", + "option_operagx_mod_publicShareUrl":"", + "option_operagx_mod_team_id":"", + "option_operagx_mod_team_name":"", + "option_operagx_mod_version":"1.0.0.0", + "option_operagx_next_version":"1.0.0.0", + "option_operagx_publicShareUrl":"", + "option_operagx_scale":0, + "option_operagx_team_id":"", + "option_operagx_team_name":"", + "option_operagx_texture_page":"2048x2048", + "option_operagx_transparent_background":false, + "option_operagx_version":"1.0.0.0", + "resourceType":"GMOperaGXOptions", + "resourceVersion":"2.0", +} \ No newline at end of file diff --git a/example/project/options/reddit/options_reddit.yy b/example/project/options/reddit/options_reddit.yy new file mode 100644 index 0000000..3a0f503 --- /dev/null +++ b/example/project/options/reddit/options_reddit.yy @@ -0,0 +1,15 @@ +{ + "$GMRedditOptions":"v2", + "%Name":"Reddit", + "name":"Reddit", + "option_reddit_devvit_project_id":"${project_name}", + "option_reddit_devvit_project_path":"", + "option_reddit_display_cursor":true, + "option_reddit_game_name":"${project_name}", + "option_reddit_interpolate_pixels":true, + "option_reddit_scale":0, + "option_reddit_texture_page":"2048x2048", + "option_reddit_transparent_background":false, + "resourceType":"GMRedditOptions", + "resourceVersion":"2.0", +} \ No newline at end of file diff --git a/example/project/options/tvos/options_tvos.yy b/example/project/options/tvos/options_tvos.yy new file mode 100644 index 0000000..6472eff --- /dev/null +++ b/example/project/options/tvos/options_tvos.yy @@ -0,0 +1,31 @@ +{ + "$GMtvOSOptions":"v1", + "%Name":"tvOS", + "name":"tvOS", + "option_tvos_build_number":0, + "option_tvos_bundle_name":"com.company.game", + "option_tvos_display_cursor":false, + "option_tvos_display_name":"project", + "option_tvos_enable_broadcast":false, + "option_tvos_icon_1280":"${base_options_dir}/tvos/icons/1280.png", + "option_tvos_icon_400":"${base_options_dir}/tvos/icons/400.png", + "option_tvos_icon_400_2x":"${base_options_dir}/tvos/icons/400_2x.png", + "option_tvos_interpolate_pixels":true, + "option_tvos_min_version":"10.0", + "option_tvos_output_dir":"~/GameMakerStudio2/tvOS", + "option_tvos_podfile_lock_path":"${options_dir}\\tvos\\Podfile.lock", + "option_tvos_podfile_path":"${options_dir}\\tvos\\Podfile", + "option_tvos_scale":0, + "option_tvos_splashscreen":"${base_options_dir}/tvos/splash/splash.png", + "option_tvos_splashscreen_2x":"${base_options_dir}/tvos/splash/splash_2x.png", + "option_tvos_splash_time":0, + "option_tvos_team_id":"", + "option_tvos_texture_page":"2048x2048", + "option_tvos_topshelf":"${base_options_dir}/tvos/topshelf/topshelf.png", + "option_tvos_topshelf_2x":"${base_options_dir}/tvos/topshelf/topshelf_2x.png", + "option_tvos_topshelf_wide":"${base_options_dir}/tvos/topshelf/topshelf_wide.png", + "option_tvos_topshelf_wide_2x":"${base_options_dir}/tvos/topshelf/topshelf_wide_2x.png", + "option_tvos_version":"1.0.0.0", + "resourceType":"GMtvOSOptions", + "resourceVersion":"2.0", +} \ No newline at end of file diff --git a/example/project/options/windows/options_windows.yy b/example/project/options/windows/options_windows.yy new file mode 100644 index 0000000..678bbda --- /dev/null +++ b/example/project/options/windows/options_windows.yy @@ -0,0 +1,38 @@ +{ + "$GMWindowsOptions":"v2", + "%Name":"Windows", + "name":"Windows", + "option_windows_allow_fullscreen_switching":false, + "option_windows_borderless":false, + "option_windows_company_info":"YoYo Games Ltd", + "option_windows_copyright_info":"", + "option_windows_copy_exe_to_dest":false, + "option_windows_d3dswapeffectdiscard":false, + "option_windows_description_info":"A GameMaker Game", + "option_windows_disable_sandbox":false, + "option_windows_display_cursor":true, + "option_windows_display_name":"project", + "option_windows_enable_steam":false, + "option_windows_executable_name":"${project_name}.exe", + "option_windows_icon":"${base_options_dir}/windows/icons/icon.ico", + "option_windows_installer_finished":"${base_options_dir}/windows/installer/finished.bmp", + "option_windows_installer_header":"${base_options_dir}/windows/installer/header.bmp", + "option_windows_interpolate_pixels":true, + "option_windows_license":"${base_options_dir}/windows/installer/license.txt", + "option_windows_nsis_file":"${base_options_dir}/windows/installer/nsis_script.nsi", + "option_windows_product_info":"${project_name}", + "option_windows_resize_window":false, + "option_windows_save_location":0, + "option_windows_scale":0, + "option_windows_sleep_margin":10, + "option_windows_splash_screen":"${base_options_dir}/windows/splash/splash.png", + "option_windows_start_fullscreen":false, + "option_windows_steam_use_alternative_launcher":false, + "option_windows_texture_page":"2048x2048", + "option_windows_use_raw_mouse":false, + "option_windows_use_splash":false, + "option_windows_version":"1.0.0.0", + "option_windows_vsync":true, + "resourceType":"GMWindowsOptions", + "resourceVersion":"2.0", +} \ No newline at end of file diff --git a/example/project/project.yyp b/example/project/project.yyp new file mode 100644 index 0000000..87952d7 --- /dev/null +++ b/example/project/project.yyp @@ -0,0 +1,35 @@ +{ + "$GMProject":"v1", + "%Name":"project", + "AudioGroups":[ + {"$GMAudioGroup":"v1","%Name":"audiogroup_default","exportDir":"","name":"audiogroup_default","resourceType":"GMAudioGroup","resourceVersion":"2.0","targets":-1,}, + ], + "configs":{ + "children":[], + "name":"Default", + }, + "defaultScriptType":1, + "Folders":[], + "ForcedPrefabProjectReferences":[], + "IncludedFiles":[], + "isEcma":false, + "LibraryEmitters":[], + "MetaData":{ + "IDEVersion":"2024.1400.4.1030", + }, + "name":"project", + "resources":[ + {"id":{"name":"exExtensionTest","path":"extensions/exExtensionTest/exExtensionTest.yy",},}, + {"id":{"name":"objExtensionTest","path":"objects/objExtensionTest/objExtensionTest.yy",},}, + {"id":{"name":"rRoom","path":"rooms/rRoom/rRoom.yy",},}, + ], + "resourceType":"GMProject", + "resourceVersion":"2.0", + "RoomOrderNodes":[ + {"roomId":{"name":"rRoom","path":"rooms/rRoom/rRoom.yy",},}, + ], + "templateType":"game", + "TextureGroups":[ + {"$GMTextureGroup":"","%Name":"Default","autocrop":true,"border":2,"compressFormat":"bz2","customOptions":"","directory":"","groupParent":null,"isScaled":true,"loadType":"default","mipsToGenerate":0,"name":"Default","resourceType":"GMTextureGroup","resourceVersion":"2.0","targets":-1,}, + ], +} \ No newline at end of file diff --git a/example/project/rooms/rRoom/rRoom.yy b/example/project/rooms/rRoom/rRoom.yy new file mode 100644 index 0000000..14558fb --- /dev/null +++ b/example/project/rooms/rRoom/rRoom.yy @@ -0,0 +1,57 @@ +{ + "$GMRoom":"v1", + "%Name":"rRoom", + "creationCodeFile":"", + "inheritCode":false, + "inheritCreationOrder":false, + "inheritLayers":false, + "instanceCreationOrder":[ + {"name":"inst_4DD32213","path":"rooms/rRoom/rRoom.yy",}, + ], + "isDnd":false, + "layers":[ + {"$GMRInstanceLayer":"","%Name":"Instances","depth":0,"effectEnabled":true,"effectType":null,"gridX":32,"gridY":32,"hierarchyFrozen":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritSubLayers":true,"inheritVisibility":true,"instances":[ + {"$GMRInstance":"v4","%Name":"inst_4DD32213","colour":4294967295,"frozen":false,"hasCreationCode":false,"ignore":false,"imageIndex":0,"imageSpeed":1.0,"inheritCode":false,"inheritedItemId":null,"inheritItemSettings":false,"isDnd":false,"name":"inst_4DD32213","objectId":{"name":"objExtensionTest","path":"objects/objExtensionTest/objExtensionTest.yy",},"properties":[],"resourceType":"GMRInstance","resourceVersion":"2.0","rotation":0.0,"scaleX":1.0,"scaleY":1.0,"x":0.0,"y":0.0,}, + ],"layers":[],"name":"Instances","properties":[],"resourceType":"GMRInstanceLayer","resourceVersion":"2.0","userdefinedDepth":false,"visible":true,}, + {"$GMRBackgroundLayer":"","%Name":"Background","animationFPS":15.0,"animationSpeedType":0,"colour":4278190080,"depth":100,"effectEnabled":true,"effectType":null,"gridX":32,"gridY":32,"hierarchyFrozen":false,"hspeed":0.0,"htiled":false,"inheritLayerDepth":false,"inheritLayerSettings":false,"inheritSubLayers":true,"inheritVisibility":true,"layers":[],"name":"Background","properties":[],"resourceType":"GMRBackgroundLayer","resourceVersion":"2.0","spriteId":null,"stretch":false,"userdefinedAnimFPS":false,"userdefinedDepth":false,"visible":true,"vspeed":0.0,"vtiled":false,"x":0,"y":0,}, + ], + "name":"rRoom", + "parent":{ + "name":"project", + "path":"project.yyp", + }, + "parentRoom":null, + "physicsSettings":{ + "inheritPhysicsSettings":false, + "PhysicsWorld":false, + "PhysicsWorldGravityX":0.0, + "PhysicsWorldGravityY":10.0, + "PhysicsWorldPixToMetres":0.1, + }, + "resourceType":"GMRoom", + "resourceVersion":"2.0", + "roomSettings":{ + "Height":608, + "inheritRoomSettings":false, + "persistent":false, + "Width":800, + }, + "sequenceId":null, + "views":[ + {"hborder":32,"hport":768,"hspeed":-1,"hview":768,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":1366,"wview":1366,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":768,"hspeed":-1,"hview":768,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":1366,"wview":1366,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":768,"hspeed":-1,"hview":768,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":1366,"wview":1366,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":768,"hspeed":-1,"hview":768,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":1366,"wview":1366,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":768,"hspeed":-1,"hview":768,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":1366,"wview":1366,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":768,"hspeed":-1,"hview":768,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":1366,"wview":1366,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":768,"hspeed":-1,"hview":768,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":1366,"wview":1366,"xport":0,"xview":0,"yport":0,"yview":0,}, + {"hborder":32,"hport":768,"hspeed":-1,"hview":768,"inherit":false,"objectId":null,"vborder":32,"visible":false,"vspeed":-1,"wport":1366,"wview":1366,"xport":0,"xview":0,"yport":0,"yview":0,}, + ], + "viewSettings":{ + "clearDisplayBuffer":true, + "clearViewBackground":false, + "enableViews":false, + "inheritViewSettings":false, + }, + "volume":1.0, +} \ No newline at end of file