commit 7ca0be1f811dc4a7bc9b0a42b30b1ff0c890d202 Author: mydataway_yangzhe Date: Tue Jul 21 20:34:34 2020 +0800 初次提交 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..50e1322 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/*.log diff --git a/.import/favicon.png-80d19ea9a443d34be4d74a9316cc8177.md5 b/.import/favicon.png-80d19ea9a443d34be4d74a9316cc8177.md5 new file mode 100644 index 0000000..7b61c3e --- /dev/null +++ b/.import/favicon.png-80d19ea9a443d34be4d74a9316cc8177.md5 @@ -0,0 +1,3 @@ +source_md5="47313fa4c47a9963fddd764e1ec6e4a8" +dest_md5="2ded9e7f9060e2b530aab678b135fc5b" + diff --git a/.import/favicon.png-80d19ea9a443d34be4d74a9316cc8177.stex b/.import/favicon.png-80d19ea9a443d34be4d74a9316cc8177.stex new file mode 100644 index 0000000..3ca6461 Binary files /dev/null and b/.import/favicon.png-80d19ea9a443d34be4d74a9316cc8177.stex differ diff --git a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 new file mode 100644 index 0000000..7b61c3e --- /dev/null +++ b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 @@ -0,0 +1,3 @@ +source_md5="47313fa4c47a9963fddd764e1ec6e4a8" +dest_md5="2ded9e7f9060e2b530aab678b135fc5b" + diff --git a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex new file mode 100644 index 0000000..3ca6461 Binary files /dev/null and b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex differ diff --git a/.import/icon.png-63d61f13bea2972fb98d2318c1e93e56.md5 b/.import/icon.png-63d61f13bea2972fb98d2318c1e93e56.md5 new file mode 100644 index 0000000..7b61c3e --- /dev/null +++ b/.import/icon.png-63d61f13bea2972fb98d2318c1e93e56.md5 @@ -0,0 +1,3 @@ +source_md5="47313fa4c47a9963fddd764e1ec6e4a8" +dest_md5="2ded9e7f9060e2b530aab678b135fc5b" + diff --git a/.import/icon.png-63d61f13bea2972fb98d2318c1e93e56.stex b/.import/icon.png-63d61f13bea2972fb98d2318c1e93e56.stex new file mode 100644 index 0000000..3ca6461 Binary files /dev/null and b/.import/icon.png-63d61f13bea2972fb98d2318c1e93e56.stex differ diff --git a/.import/index.png-de14850a4c2320eaddca8799ea52db2b.md5 b/.import/index.png-de14850a4c2320eaddca8799ea52db2b.md5 new file mode 100644 index 0000000..946404d --- /dev/null +++ b/.import/index.png-de14850a4c2320eaddca8799ea52db2b.md5 @@ -0,0 +1,3 @@ +source_md5="7e41bf3051b18e392a4bb6c0cc45cd7c" +dest_md5="92eb858faaa1840609e0a1d10f0a2ab1" + diff --git a/.import/index.png-de14850a4c2320eaddca8799ea52db2b.stex b/.import/index.png-de14850a4c2320eaddca8799ea52db2b.stex new file mode 100644 index 0000000..131f795 Binary files /dev/null and b/.import/index.png-de14850a4c2320eaddca8799ea52db2b.stex differ diff --git a/.import/mota.png-02d33da8bf0f085bff84efd72f4babc5.md5 b/.import/mota.png-02d33da8bf0f085bff84efd72f4babc5.md5 new file mode 100644 index 0000000..75dd1f6 --- /dev/null +++ b/.import/mota.png-02d33da8bf0f085bff84efd72f4babc5.md5 @@ -0,0 +1,3 @@ +source_md5="60514c3844e365d1aecfc555e1a44548" +dest_md5="1adb04621553370458c19304359c525f" + diff --git a/.import/mota.png-02d33da8bf0f085bff84efd72f4babc5.stex b/.import/mota.png-02d33da8bf0f085bff84efd72f4babc5.stex new file mode 100644 index 0000000..74e2baa Binary files /dev/null and b/.import/mota.png-02d33da8bf0f085bff84efd72f4babc5.stex differ diff --git a/MainScene.tscn b/MainScene.tscn new file mode 100644 index 0000000..7182385 --- /dev/null +++ b/MainScene.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://scenes/UI.tscn" type="PackedScene" id=1] +[ext_resource path="res://scripts/NavigationTileMap.gd" type="Script" id=2] +[ext_resource path="res://scenes/Player.tscn" type="PackedScene" id=3] +[ext_resource path="res://images/mota_tileset.tres" type="TileSet" id=4] + +[node name="2D" type="Node2D"] + +[node name="BackgroundTileMap" type="TileMap" parent="."] +tile_set = ExtResource( 4 ) +cell_size = Vector2( 32, 32 ) +cell_custom_transform = Transform2D( 32, 0, 0, 32, 0, 0 ) +format = 1 +tile_data = PoolIntArray( 0, 1, 0, 1, 1, 0, 2, 1, 0, 3, 1, 0, 17, 1, 0, 18, 1, 0, 19, 1, 0, 20, 1, 0, 65536, 1, 0, 65537, 1, 0, 65538, 1, 0, 65539, 1, 0, 65553, 1, 0, 65554, 1, 0, 65555, 1, 0, 65556, 1, 0, 131072, 1, 0, 131073, 1, 0, 131074, 1, 0, 131075, 1, 0, 131089, 1, 0, 131090, 1, 0, 131091, 1, 0, 131092, 1, 0, 196608, 1, 0, 196609, 1, 0, 196610, 1, 0, 196611, 1, 0, 196625, 1, 0, 196626, 1, 0, 196627, 1, 0, 196628, 1, 0, 262144, 1, 0, 262145, 1, 0, 262146, 1, 0, 262147, 1, 0, 262161, 1, 0, 262162, 1, 0, 262163, 1, 0, 262164, 1, 0, 327680, 1, 0, 327681, 1, 0, 327682, 1, 0, 327683, 1, 0, 327697, 1, 0, 327698, 1, 0, 327699, 1, 0, 327700, 1, 0, 393216, 1, 0, 393217, 1, 0, 393218, 1, 0, 393219, 1, 0, 393233, 1, 0, 393234, 1, 0, 393235, 1, 0, 393236, 1, 0, 458752, 1, 0, 458753, 1, 0, 458754, 1, 0, 458755, 1, 0, 458769, 1, 0, 458770, 1, 0, 458771, 1, 0, 458772, 1, 0, 524288, 1, 0, 524289, 1, 0, 524290, 1, 0, 524291, 1, 0, 524305, 1, 0, 524306, 1, 0, 524307, 1, 0, 524308, 1, 0, 589824, 1, 0, 589825, 1, 0, 589826, 1, 0, 589827, 1, 0, 589841, 1, 0, 589842, 1, 0, 589843, 1, 0, 589844, 1, 0, 655360, 1, 0, 655361, 1, 0, 655362, 1, 0, 655363, 1, 0, 655377, 1, 0, 655378, 1, 0, 655379, 1, 0, 655380, 1, 0, 720896, 1, 0, 720897, 1, 0, 720898, 1, 0, 720899, 1, 0, 720913, 1, 0, 720914, 1, 0, 720915, 1, 0, 720916, 1, 0, 786432, 1, 0, 786433, 1, 0, 786434, 1, 0, 786435, 1, 0, 786449, 1, 0, 786450, 1, 0, 786451, 1, 0, 786452, 1, 0 ) + +[node name="UI" parent="." instance=ExtResource( 1 )] + +[node name="NavigationTileMap" type="TileMap" parent="."] +tile_set = ExtResource( 4 ) +cell_size = Vector2( 32, 32 ) +collision_mask = 2147483649 +format = 1 +tile_data = PoolIntArray( 196618, 2, 0, 262151, 2, 0, 262152, 2, 0, 262153, 2, 0, 262154, 2, 0, 262155, 2, 0, 262156, 2, 0, 262157, 2, 0, 327687, 2, 0, 327690, 2, 0, 327693, 2, 0, 393222, 2, 0, 393223, 2, 0, 393224, 2, 0, 393225, 2, 0, 393226, 2, 0, 393227, 2, 0, 393228, 2, 0, 393229, 2, 0, 393230, 2, 0, 393231, 2, 0, 458759, 2, 0, 458760, 2, 0, 458762, 2, 0, 458765, 2, 0, 524296, 2, 0, 524297, 2, 0, 524298, 2, 0, 524299, 2, 0, 524300, 2, 0, 524301, 2, 0, 589834, 2, 0 ) +script = ExtResource( 2 ) + +[node name="PlayerKinematicBody2D" parent="." instance=ExtResource( 3 )] diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..5a8c33c --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,223 @@ +[preset.0] + +name="HTML5" +platform="HTML5" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="export/index.html" +patch_list=PoolStringArray( ) +script_export_mode=1 +script_encryption_key="" + +[preset.0.options] + +vram_texture_compression/for_desktop=true +vram_texture_compression/for_mobile=true +html/custom_html_shell="" +html/head_include="" +custom_template/release="" +custom_template/debug="" + +[preset.1] + +name="Android" +platform="Android" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="export/mota.apk" +patch_list=PoolStringArray( ) +script_export_mode=1 +script_encryption_key="" + +[preset.1.options] + +graphics/32_bits_framebuffer=true +xr_features/xr_mode=0 +xr_features/degrees_of_freedom=0 +xr_features/hand_tracking=0 +xr_features/focus_awareness=false +one_click_deploy/clear_previous_install=false +custom_template/debug="" +custom_template/release="" +custom_template/use_custom_build=false +command_line/extra_args="" +version/code=1 +version/name="1.0" +package/unique_name="org.godotengine.$genname" +package/name="" +package/signed=true +screen/immersive_mode=true +screen/orientation=0 +screen/support_small=true +screen/support_normal=true +screen/support_large=true +screen/support_xlarge=true +screen/opengl_debug=false +launcher_icons/main_192x192="" +launcher_icons/adaptive_foreground_432x432="" +launcher_icons/adaptive_background_432x432="" +keystore/debug="" +keystore/debug_user="" +keystore/debug_password="" +keystore/release="" +keystore/release_user="" +keystore/release_password="" +apk_expansion/enable=false +apk_expansion/SALT="" +apk_expansion/public_key="" +architectures/armeabi-v7a=true +architectures/arm64-v8a=false +architectures/x86=false +architectures/x86_64=false +permissions/custom_permissions=PoolStringArray( ) +permissions/access_checkin_properties=false +permissions/access_coarse_location=false +permissions/access_fine_location=false +permissions/access_location_extra_commands=false +permissions/access_mock_location=false +permissions/access_network_state=false +permissions/access_surface_flinger=false +permissions/access_wifi_state=false +permissions/account_manager=false +permissions/add_voicemail=false +permissions/authenticate_accounts=false +permissions/battery_stats=false +permissions/bind_accessibility_service=false +permissions/bind_appwidget=false +permissions/bind_device_admin=false +permissions/bind_input_method=false +permissions/bind_nfc_service=false +permissions/bind_notification_listener_service=false +permissions/bind_print_service=false +permissions/bind_remoteviews=false +permissions/bind_text_service=false +permissions/bind_vpn_service=false +permissions/bind_wallpaper=false +permissions/bluetooth=false +permissions/bluetooth_admin=false +permissions/bluetooth_privileged=false +permissions/brick=false +permissions/broadcast_package_removed=false +permissions/broadcast_sms=false +permissions/broadcast_sticky=false +permissions/broadcast_wap_push=false +permissions/call_phone=false +permissions/call_privileged=false +permissions/camera=false +permissions/capture_audio_output=false +permissions/capture_secure_video_output=false +permissions/capture_video_output=false +permissions/change_component_enabled_state=false +permissions/change_configuration=false +permissions/change_network_state=false +permissions/change_wifi_multicast_state=false +permissions/change_wifi_state=false +permissions/clear_app_cache=false +permissions/clear_app_user_data=false +permissions/control_location_updates=false +permissions/delete_cache_files=false +permissions/delete_packages=false +permissions/device_power=false +permissions/diagnostic=false +permissions/disable_keyguard=false +permissions/dump=false +permissions/expand_status_bar=false +permissions/factory_test=false +permissions/flashlight=false +permissions/force_back=false +permissions/get_accounts=false +permissions/get_package_size=false +permissions/get_tasks=false +permissions/get_top_activity_info=false +permissions/global_search=false +permissions/hardware_test=false +permissions/inject_events=false +permissions/install_location_provider=false +permissions/install_packages=false +permissions/install_shortcut=false +permissions/internal_system_window=false +permissions/internet=false +permissions/kill_background_processes=false +permissions/location_hardware=false +permissions/manage_accounts=false +permissions/manage_app_tokens=false +permissions/manage_documents=false +permissions/master_clear=false +permissions/media_content_control=false +permissions/modify_audio_settings=false +permissions/modify_phone_state=false +permissions/mount_format_filesystems=false +permissions/mount_unmount_filesystems=false +permissions/nfc=false +permissions/persistent_activity=false +permissions/process_outgoing_calls=false +permissions/read_calendar=false +permissions/read_call_log=false +permissions/read_contacts=false +permissions/read_external_storage=false +permissions/read_frame_buffer=false +permissions/read_history_bookmarks=false +permissions/read_input_state=false +permissions/read_logs=false +permissions/read_phone_state=false +permissions/read_profile=false +permissions/read_sms=false +permissions/read_social_stream=false +permissions/read_sync_settings=false +permissions/read_sync_stats=false +permissions/read_user_dictionary=false +permissions/reboot=false +permissions/receive_boot_completed=false +permissions/receive_mms=false +permissions/receive_sms=false +permissions/receive_wap_push=false +permissions/record_audio=false +permissions/reorder_tasks=false +permissions/restart_packages=false +permissions/send_respond_via_message=false +permissions/send_sms=false +permissions/set_activity_watcher=false +permissions/set_alarm=false +permissions/set_always_finish=false +permissions/set_animation_scale=false +permissions/set_debug_app=false +permissions/set_orientation=false +permissions/set_pointer_speed=false +permissions/set_preferred_applications=false +permissions/set_process_limit=false +permissions/set_time=false +permissions/set_time_zone=false +permissions/set_wallpaper=false +permissions/set_wallpaper_hints=false +permissions/signal_persistent_processes=false +permissions/status_bar=false +permissions/subscribed_feeds_read=false +permissions/subscribed_feeds_write=false +permissions/system_alert_window=false +permissions/transmit_ir=false +permissions/uninstall_shortcut=false +permissions/update_device_stats=false +permissions/use_credentials=false +permissions/use_sip=false +permissions/vibrate=false +permissions/wake_lock=false +permissions/write_apn_settings=false +permissions/write_calendar=false +permissions/write_call_log=false +permissions/write_contacts=false +permissions/write_external_storage=false +permissions/write_gservices=false +permissions/write_history_bookmarks=false +permissions/write_profile=false +permissions/write_secure_settings=false +permissions/write_settings=false +permissions/write_sms=false +permissions/write_social_stream=false +permissions/write_sync_settings=false +permissions/write_user_dictionary=false diff --git a/fonts/Droid Sans Fallback.ttf b/fonts/Droid Sans Fallback.ttf new file mode 100644 index 0000000..6f92880 Binary files /dev/null and b/fonts/Droid Sans Fallback.ttf differ diff --git a/images/mota.png b/images/mota.png new file mode 100644 index 0000000..42efdea Binary files /dev/null and b/images/mota.png differ diff --git a/images/mota.png.import b/images/mota.png.import new file mode 100644 index 0000000..2472098 --- /dev/null +++ b/images/mota.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mota.png-02d33da8bf0f085bff84efd72f4babc5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://images/mota.png" +dest_files=[ "res://.import/mota.png-02d33da8bf0f085bff84efd72f4babc5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/images/mota_tileset.tres b/images/mota_tileset.tres new file mode 100644 index 0000000..5fe6d98 --- /dev/null +++ b/images/mota_tileset.tres @@ -0,0 +1,62 @@ +[gd_resource type="TileSet" load_steps=4 format=2] + +[ext_resource path="res://images/mota.png" type="Texture" id=1] + +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 ) + +[sub_resource type="NavigationPolygon" id=2] +vertices = PoolVector2Array( 12.8379, -3.70605, 12.9995, 7.7608, 11.8689, 13.575, -5.4122, 14.7056, -5.4122, 18.5817, 11.7074, 18.2587, 12.3534, 36.5088, 18.4906, 36.5088, 17.1986, 19.0662, 39.8093, 18.7432, 38.1943, 11.7985, 18.4906, 12.606, 18.4906, -4.02911 ) +polygons = [ PoolIntArray( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ) ] + +[resource] +0/name = "mota.png 0" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 512, 32, 32 ) +0/tile_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 1 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 +1/name = "mota.png 1" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 32, 512, 32, 32 ) +1/tile_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape_one_way = false +1/shape_one_way_margin = 0.0 +1/shapes = [ ] +1/z_index = 0 +2/name = "mota.png 2" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 256, 512, 32, 32 ) +2/tile_mode = 0 +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/navigation = SubResource( 2 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape_one_way = false +2/shape_one_way_margin = 0.0 +2/shapes = [ ] +2/z_index = 0 diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..64aac38 --- /dev/null +++ b/project.godot @@ -0,0 +1,68 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +_global_script_classes=[ { +"base": "Tween", +"class": "ArrayTween", +"language": "GDScript", +"path": "res://scripts/ArrayTween.gd" +}, { +"base": "Node", +"class": "GameArchive", +"language": "GDScript", +"path": "res://scripts/GameArchive.gd" +}, { +"base": "TileMap", +"class": "NavigationTileMap", +"language": "GDScript", +"path": "res://scripts/NavigationTileMap.gd" +}, { +"base": "KinematicBody2D", +"class": "PlayerKinematicBody2D", +"language": "GDScript", +"path": "res://scripts/PlayerKinematicBody2D.gd" +}, { +"base": "Object", +"class": "PlayerProperty", +"language": "GDScript", +"path": "res://scripts/PlayerProperty.gd" +}, { +"base": "Sprite", +"class": "PlayerSprite", +"language": "GDScript", +"path": "res://scripts/PlayerSprite.gd" +} ] +_global_script_class_icons={ +"ArrayTween": "", +"GameArchive": "", +"NavigationTileMap": "", +"PlayerKinematicBody2D": "", +"PlayerProperty": "", +"PlayerSprite": "" +} + +[application] + +config/name="mota" +run/main_scene="res://MainScene.tscn" +config/icon="res://settings/icon.png" + +[display] + +window/size/width=672 +window/size/height=416 +window/size/always_on_top=true +window/dpi/allow_hidpi=true +window/stretch/mode="2d" +window/stretch/aspect="keep" + +[rendering] + +environment/default_environment="res://settings/default_env.tres" diff --git a/scenes/Player.tscn b/scenes/Player.tscn new file mode 100644 index 0000000..a329893 --- /dev/null +++ b/scenes/Player.tscn @@ -0,0 +1,146 @@ +[gd_scene load_steps=17 format=2] + +[ext_resource path="res://scripts/PlayerSprite.gd" type="Script" id=1] +[ext_resource path="res://scripts/PlayerKinematicBody2D.gd" type="Script" id=2] +[ext_resource path="res://scripts/ArrayTween.gd" type="Script" id=3] +[ext_resource path="res://images/mota.png" type="Texture" id=4] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 8, 8 ) + +[sub_resource type="Animation" id=4] +resource_name = "down" +length = 1.2 +tracks/0/type = "value" +tracks/0/path = NodePath("PlayerSprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.4, 0.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2 ] +} + +[sub_resource type="Animation" id=2] +resource_name = "left" +length = 1.2 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("PlayerSprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.4, 0.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 6, 7, 8 ] +} + +[sub_resource type="Animation" id=3] +resource_name = "right" +length = 1.2 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("PlayerSprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.4, 0.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 9, 10, 11 ] +} + +[sub_resource type="Animation" id=5] +resource_name = "up" +length = 1.2 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("PlayerSprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.4, 0.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 3, 4, 5 ] +} + +[sub_resource type="AnimationNodeTimeScale" id=12] + +[sub_resource type="AnimationNodeAnimation" id=6] +animation = "right" + +[sub_resource type="AnimationNodeAnimation" id=7] +animation = "up" + +[sub_resource type="AnimationNodeAnimation" id=8] +animation = "down" + +[sub_resource type="AnimationNodeAnimation" id=9] +animation = "left" + +[sub_resource type="AnimationNodeBlendSpace2D" id=10] +blend_point_0/node = SubResource( 6 ) +blend_point_0/pos = Vector2( 1, 0 ) +blend_point_1/node = SubResource( 7 ) +blend_point_1/pos = Vector2( 0, -0.9 ) +blend_point_2/node = SubResource( 8 ) +blend_point_2/pos = Vector2( 0, 1 ) +blend_point_3/node = SubResource( 9 ) +blend_point_3/pos = Vector2( -1, 0 ) +blend_mode = 1 + +[sub_resource type="AnimationNodeBlendTree" id=11] +nodes/TimeScale/node = SubResource( 12 ) +nodes/TimeScale/position = Vector2( 340, 40 ) +nodes/output/position = Vector2( 580, 60 ) +nodes/player/node = SubResource( 10 ) +nodes/player/position = Vector2( 120, 40 ) +node_connections = [ "TimeScale", 0, "player", "output", 0, "TimeScale" ] + +[node name="PlayerKinematicBody2D" type="KinematicBody2D"] +position = Vector2( 336, 208 ) +script = ExtResource( 2 ) +__meta__ = { +"_edit_group_": true +} +navigation_tile_map_path = NodePath("../NavigationTileMap") + +[node name="ArrayTween" type="Tween" parent="."] +script = ExtResource( 3 ) +duration = 0.1 + +[node name="PlayerSprite" type="Sprite" parent="."] +texture = ExtResource( 4 ) +vframes = 3 +hframes = 4 +region_enabled = true +region_rect = Rect2( 192, 192, 128, 96 ) +script = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/down = SubResource( 4 ) +anims/left = SubResource( 2 ) +anims/right = SubResource( 3 ) +anims/up = SubResource( 5 ) + +[node name="AnimationTree" type="AnimationTree" parent="."] +tree_root = SubResource( 11 ) +anim_player = NodePath("../AnimationPlayer") +parameters/TimeScale/scale = 10.0 +parameters/player/blend_position = Vector2( -0.0495575, -0.190751 ) +[connection signal="array_completed" from="ArrayTween" to="." method="_on_ArrayTween_array_completed"] +[connection signal="array_value_step" from="ArrayTween" to="." method="_on_ArrayTween_array_value_step"] diff --git a/scenes/UI.tscn b/scenes/UI.tscn new file mode 100644 index 0000000..fbff746 --- /dev/null +++ b/scenes/UI.tscn @@ -0,0 +1,342 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://images/mota.png" type="Texture" id=2] +[ext_resource path="res://fonts/Droid Sans Fallback.ttf" type="DynamicFontData" id=3] + +[sub_resource type="DynamicFont" id=1] +size = 14 +font_data = ExtResource( 3 ) + +[sub_resource type="DynamicFont" id=2] +font_data = ExtResource( 3 ) + +[sub_resource type="DynamicFont" id=3] +size = 12 +font_data = ExtResource( 3 ) + +[sub_resource type="Curve" id=4] +_data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0.1 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="CurveTexture" id=5] +curve = SubResource( 4 ) + +[sub_resource type="DynamicFont" id=6] +size = 10 +font_data = ExtResource( 3 ) + +[sub_resource type="DynamicFont" id=7] +size = 10 +font_data = ExtResource( 3 ) + +[sub_resource type="DynamicFont" id=8] +size = 10 +font_data = ExtResource( 3 ) + +[sub_resource type="DynamicFont" id=9] +size = 10 +font_data = ExtResource( 3 ) + +[node name="UI" type="Node2D"] + +[node name="ItemBackground" type="ColorRect" parent="."] +anchor_right = 0.058 +margin_left = 8.0 +margin_top = 224.0 +margin_right = 120.0 +margin_bottom = 384.0 +color = Color( 0.403922, 0.403922, 0.403922, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="LevelBackground" type="ColorRect" parent="."] +margin_left = 16.0 +margin_top = 32.0 +margin_right = 120.0 +margin_bottom = 56.0 +color = Color( 0.403922, 0.403922, 0.403922, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="LevelLabel" type="Label" parent="LevelBackground"] +margin_right = 104.0 +margin_bottom = 24.0 +custom_fonts/font = SubResource( 1 ) +text = "魔塔 第01层" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="WeaponBackground" type="ColorRect" parent="."] +margin_left = 552.0 +margin_top = 32.0 +margin_right = 656.0 +margin_bottom = 72.0 +color = Color( 0.403922, 0.403922, 0.403922, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="WeaponLabel" type="Label" parent="WeaponBackground"] +margin_left = 8.0 +margin_right = 56.0 +margin_bottom = 40.0 +custom_fonts/font = SubResource( 2 ) +custom_colors/font_color = Color( 0.952941, 0.776471, 0.658824, 1 ) +text = "神圣剑" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="WeaponSprite" type="Sprite" parent="WeaponBackground"] +position = Vector2( 80, 20 ) +texture = ExtResource( 2 ) +region_enabled = true +region_rect = Rect2( 224, 448, 32, 32 ) + +[node name="ShieldBackground" type="ColorRect" parent="."] +margin_left = 552.0 +margin_top = 88.0 +margin_right = 656.0 +margin_bottom = 128.0 +color = Color( 0.403922, 0.403922, 0.403922, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ShieldLabel" type="Label" parent="ShieldBackground"] +margin_left = 8.0 +margin_right = 56.0 +margin_bottom = 40.0 +custom_fonts/font = SubResource( 2 ) +custom_colors/font_color = Color( 0.815686, 0.803922, 0.992157, 1 ) +text = "神圣盾" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ShieldSprite" type="Sprite" parent="ShieldBackground"] +position = Vector2( 80, 20 ) +texture = ExtResource( 2 ) +region_enabled = true +region_rect = Rect2( 256, 448, 32, 32 ) + +[node name="KeyBackground" type="ColorRect" parent="."] +margin_left = 552.0 +margin_top = 144.0 +margin_right = 656.0 +margin_bottom = 224.0 +color = Color( 0.403922, 0.403922, 0.403922, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Sprite" type="Sprite" parent="KeyBackground"] +position = Vector2( 15, 26 ) +scale = Vector2( 0.75, 0.75 ) +texture = ExtResource( 2 ) +region_enabled = true +region_rect = Rect2( 96, 448, 32, 32 ) + +[node name="YellowKeyCountLabel" type="Label" parent="KeyBackground"] +margin_left = 28.0 +margin_top = 14.0 +margin_right = 52.0 +margin_bottom = 38.0 +custom_fonts/font = SubResource( 3 ) +text = "0" +valign = 1 +autowrap = true +clip_text = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Sprite2" type="Sprite" parent="KeyBackground"] +position = Vector2( 64, 26 ) +scale = Vector2( 0.75, 0.75 ) +texture = ExtResource( 2 ) +region_enabled = true +region_rect = Rect2( 128, 448, 32, 32 ) + +[node name="BlueKeyCountLabel" type="Label" parent="KeyBackground"] +margin_left = 76.0 +margin_top = 14.0 +margin_right = 100.0 +margin_bottom = 38.0 +custom_fonts/font = SubResource( 3 ) +text = "0" +valign = 1 +autowrap = true +clip_text = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Sprite3" type="Sprite" parent="KeyBackground"] +position = Vector2( 15, 60 ) +scale = Vector2( 0.75, 0.75 ) +texture = ExtResource( 2 ) +region_enabled = true +region_rect = Rect2( 160, 448, 32, 32 ) + +[node name="RedKeyCountLabel" type="Label" parent="KeyBackground"] +margin_left = 27.0 +margin_top = 48.0 +margin_right = 51.0 +margin_bottom = 72.0 +custom_fonts/font = SubResource( 3 ) +text = "0" +valign = 1 +autowrap = true +clip_text = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Sprite4" type="Sprite" parent="KeyBackground"] +position = Vector2( 66, 60 ) +scale = Vector2( 0.75, 0.75 ) +texture = ExtResource( 2 ) +region_enabled = true +region_rect = Rect2( 192, 448, 32, 32 ) + +[node name="GreenKeyCountLabel" type="Label" parent="KeyBackground"] +margin_left = 78.0 +margin_top = 48.0 +margin_right = 102.0 +margin_bottom = 72.0 +custom_fonts/font = SubResource( 3 ) +text = "0" +valign = 1 +autowrap = true +clip_text = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="MonsterInfoBackground" type="ColorRect" parent="."] +margin_left = 552.0 +margin_top = 240.0 +margin_right = 656.0 +margin_bottom = 384.0 +color = Color( 0.403922, 0.403922, 0.403922, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="MoneySprite" type="Sprite" parent="."] +position = Vector2( 24, 184 ) +texture = ExtResource( 2 ) +normal_map = SubResource( 5 ) +region_enabled = true +region_rect = Rect2( 96, 480, 32, 32 ) + +[node name="MoneyBackground" type="ColorRect" parent="MoneySprite"] +margin_left = 24.0 +margin_top = -8.0 +margin_right = 96.0 +margin_bottom = 8.0 +color = Color( 0.403922, 0.403922, 0.403922, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="MoneyLabel" type="Label" parent="MoneySprite/MoneyBackground"] +margin_right = 72.0 +margin_bottom = 16.0 +custom_fonts/font = SubResource( 6 ) +text = "0" +align = 2 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="DefSprite" type="Sprite" parent="."] +position = Vector2( 24, 152 ) +texture = ExtResource( 2 ) +region_enabled = true +region_rect = Rect2( 192, 416, 32, 32 ) + +[node name="DefBackground" type="ColorRect" parent="DefSprite"] +margin_left = 24.0 +margin_top = -8.0 +margin_right = 96.0 +margin_bottom = 8.0 +color = Color( 0.403922, 0.403922, 0.403922, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="DefLabel" type="Label" parent="DefSprite/DefBackground"] +margin_right = 72.0 +margin_bottom = 16.0 +custom_fonts/font = SubResource( 7 ) +text = "10" +align = 2 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="AtkSprite" type="Sprite" parent="."] +position = Vector2( 24, 120 ) +texture = ExtResource( 2 ) +region_enabled = true +region_rect = Rect2( 192, 384, 32, 32 ) + +[node name="AtkBackground" type="ColorRect" parent="AtkSprite"] +margin_left = 24.0 +margin_top = -8.0 +margin_right = 96.0 +margin_bottom = 8.0 +color = Color( 0.403922, 0.403922, 0.403922, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="AtkLabel" type="Label" parent="AtkSprite/AtkBackground"] +margin_right = 72.0 +margin_bottom = 16.0 +custom_fonts/font = SubResource( 8 ) +text = "10" +align = 2 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HpSprite" type="Sprite" parent="."] +position = Vector2( 24, 88 ) +texture = ExtResource( 2 ) +region_enabled = true +region_rect = Rect2( 96, 416, 32, 32 ) + +[node name="HpBackground" type="ColorRect" parent="HpSprite"] +margin_left = 24.0 +margin_top = -8.0 +margin_right = 96.0 +margin_bottom = 8.0 +color = Color( 0.403922, 0.403922, 0.403922, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HpLabel" type="Label" parent="HpSprite/HpBackground"] +margin_right = 72.0 +margin_bottom = 16.0 +custom_fonts/font = SubResource( 9 ) +text = "1000" +align = 2 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/scripts/ArrayTween.gd b/scripts/ArrayTween.gd new file mode 100644 index 0000000..baf9abb --- /dev/null +++ b/scripts/ArrayTween.gd @@ -0,0 +1,48 @@ +extends Tween + +class_name ArrayTween + +var index = 0 + +var values : Array + +# 单个节点动画时间 +export var duration: float = 1.0 +# 动画步进回调 +signal array_value_step(step) +# 所有节点动画播放完成 +signal array_completed + +func _ready(): + connect("tween_completed",self,"on_tween_completed") + pass + +# 使用节点进行动画 +func interpolate_array(values:Array) -> void: + if values.size() < 2: + return + if is_active(): + stop_all() + self.index = 0 + self.values = values + play_step() + +# 播放其中一节 +func play_step(): + var start_value = values[index] + var end_value = values[index + 1] + self.interpolate_method(self,"on_step",start_value,end_value,duration) + self.start() + +# 程序内步进回调 +func on_step(step): + emit_signal("array_value_step",step) + pass + +# 动画完成回调 +func on_tween_completed(object: Object, key: NodePath): + if index + 2 < values.size(): + index += 1 + play_step() + else: + emit_signal("array_completed") diff --git a/scripts/GameArchive.gd b/scripts/GameArchive.gd new file mode 100644 index 0000000..f0cae34 --- /dev/null +++ b/scripts/GameArchive.gd @@ -0,0 +1,10 @@ +extends Node + +class_name GameArchive + +# 创建存档时间 +var create_time : String + +# 更新存档时间 +var update_time : String + diff --git a/scripts/NavigationTileMap.gd b/scripts/NavigationTileMap.gd new file mode 100644 index 0000000..3e8a54f --- /dev/null +++ b/scripts/NavigationTileMap.gd @@ -0,0 +1,64 @@ +tool +extends TileMap + +class_name NavigationTileMap + +var astar : AStar2D = AStar2D.new() + +# 遮挡物 +export(NodePath) var collsion_tilemap_path : NodePath + +# 初始化tilemap配置 +func _init(): + self.tile_set = load("res://images/mota_tileset.tres") + self.cell_size = Vector2(32,32) + +# 初始化node和edge +func _ready(): + var cells := get_cells() + init_nodes(cells) + init_edges(cells) + +# 初始化nodes +func init_nodes(cells:Array): + for index in range(cells.size()): + var cell_position = cells[index] * cell_size + cell_position.x += 16 + cell_position.y += 16 + astar.add_point(index, cell_position) + +# 初始化edge +func init_edges(cells:Array): + for index in range(cells.size()): + var cell = cells[index] + #left + var left_cell_index = cells.find(Vector2(cell.x - 1,cell.y)) + if left_cell_index != -1: + astar.connect_points(index,left_cell_index) + #right + var right_cell_index = cells.find(Vector2(cell.x + 1,cell.y)) + if right_cell_index != -1: + astar.connect_points(index,right_cell_index) + #up + var up_cell_index = cells.find(Vector2(cell.x,cell.y - 1)) + if up_cell_index != -1: + astar.connect_points(index,up_cell_index) + #down + var down_cell_index = cells.find(Vector2(cell.x,cell.y + 1)) + if down_cell_index != -1: + astar.connect_points(index,down_cell_index) + +# 返回显示的道路需要去除被遮挡的道路 +func get_cells() -> Array: + var cells = get_used_cells() + if not collsion_tilemap_path.is_empty(): + var collsion_tilemap = get_node(collsion_tilemap_path) as TileMap + print("collsion_tilemap ", collsion_tilemap) + var collsion_cells = collsion_tilemap.get_used_cells() + for collsion_cell in collsion_cells: + var index = cells.find(collsion_cell) + if index != -1: + print("index ",index) + print("cell ",cells[index]) + cells.remove(index) + return cells diff --git a/scripts/PlayerKinematicBody2D.gd b/scripts/PlayerKinematicBody2D.gd new file mode 100644 index 0000000..411af1e --- /dev/null +++ b/scripts/PlayerKinematicBody2D.gd @@ -0,0 +1,36 @@ +tool +extends KinematicBody2D + +class_name PlayerKinematicBody2D + +export(NodePath) var navigation_tile_map_path : NodePath + +var navigation_tile_map : NavigationTileMap + +onready var array_tween : ArrayTween = $ArrayTween + +onready var animation_tree : AnimationTree = $AnimationTree + +# 初始化导航相关数据 +func _ready(): + if not navigation_tile_map_path.is_empty(): + navigation_tile_map = get_node(navigation_tile_map_path) + +# 监听屏幕点击事件 +func _input(event): + if event is InputEventMouseButton and event.is_pressed() and navigation_tile_map != null: + var astar = navigation_tile_map.astar + var start_id = astar.get_closest_point(position) + var end_id = astar.get_closest_point(event.position) + var paths = astar.get_point_path(start_id,end_id) + animation_tree.active = true + array_tween.interpolate_array(paths) + +func _on_ArrayTween_array_completed(): + animation_tree.active = false + +func _on_ArrayTween_array_value_step(step): + var diff = step - position + animation_tree["parameters/player/blend_position"] = diff + move_and_collide(diff) + get_viewport().get_texture() diff --git a/scripts/PlayerProperty.gd b/scripts/PlayerProperty.gd new file mode 100644 index 0000000..f79af16 --- /dev/null +++ b/scripts/PlayerProperty.gd @@ -0,0 +1,47 @@ +extends Object + +class_name PlayerProperty + +# 英雄名称 +var username : String = "hero" + +# 英雄血量 +var hp : int = 1000 + +# 英雄攻击力 +var atk : int = 1 + +# 英雄防御力 +var def : int = 1 + +#默认金钱 +var money : int = 0 + +# 英雄等级 +var level : int = 1 + +# 英雄经验 +var experience : int = 0 + +# 当前楼层 +var now_floor = 1 + +# 去过的最大楼层 +var max_floor = 1 + +# 去过的最小楼层 +var min_floor = 1 + +# 被使用的道具 +var used_items : Dictionary = {} + +# 增加使用过的道具 +func add_used_item(now_floor:int,id:int) -> void: + if not used_items.has(now_floor): + used_items[now_floor] = [] + var items = used_items[now_floor] as Array + items.append(id) + +# 根据楼层查询被使用过的道具 +func get_used_items_by_floor(query_floor:int) -> Array: + return used_items[query_floor] diff --git a/scripts/PlayerSprite.gd b/scripts/PlayerSprite.gd new file mode 100644 index 0000000..9195c5d --- /dev/null +++ b/scripts/PlayerSprite.gd @@ -0,0 +1,12 @@ +tool +extends Sprite + +class_name PlayerSprite + +# 默认数据初始化 +func _init(): + self.texture = load("res://images/mota.png") + self.region_enabled = true + self.region_rect = Rect2(192,192,128,96) + self.vframes = 3 + self.hframes = 4 diff --git a/settings/default_env.tres b/settings/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/settings/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/settings/icon.png b/settings/icon.png new file mode 100644 index 0000000..c98fbb6 Binary files /dev/null and b/settings/icon.png differ diff --git a/settings/icon.png.import b/settings/icon.png.import new file mode 100644 index 0000000..b5fcb72 --- /dev/null +++ b/settings/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-63d61f13bea2972fb98d2318c1e93e56.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://settings/icon.png" +dest_files=[ "res://.import/icon.png-63d61f13bea2972fb98d2318c1e93e56.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0