diff --git a/.import/logo.png-1efe533e58f8c71cd5432a9ffe791e0e.md5 b/.import/logo.png-1efe533e58f8c71cd5432a9ffe791e0e.md5 new file mode 100644 index 0000000..00ccef9 --- /dev/null +++ b/.import/logo.png-1efe533e58f8c71cd5432a9ffe791e0e.md5 @@ -0,0 +1,3 @@ +source_md5="8e8d87361090ad2293d29fbc84740e92" +dest_md5="ece39710df6cdb65420858e51d9f920f" + diff --git a/.import/logo.png-1efe533e58f8c71cd5432a9ffe791e0e.stex b/.import/logo.png-1efe533e58f8c71cd5432a9ffe791e0e.stex new file mode 100644 index 0000000..81c7768 Binary files /dev/null and b/.import/logo.png-1efe533e58f8c71cd5432a9ffe791e0e.stex differ diff --git a/MainScene.tscn b/MainScene.tscn index 2740f02..32d1d4c 100644 --- a/MainScene.tscn +++ b/MainScene.tscn @@ -1,13 +1,16 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=6 format=2] [ext_resource path="res://scenes/UI.tscn" type="PackedScene" id=1] [ext_resource path="res://scenes/floors/Floor1.tscn" type="PackedScene" id=2] [ext_resource path="res://scripts/BgmAudioPlayer.gd" type="Script" id=3] [ext_resource path="res://images/mota_tileset.tres" type="TileSet" id=4] +[ext_resource path="res://sounds/bgm.ogg" type="AudioStream" id=5] [node name="Main" type="Node2D"] [node name="BgmAudioPlayer" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource( 5 ) +volume_db = -20.0 script = ExtResource( 3 ) [node name="BackgroundTileMap" type="TileMap" parent="."] @@ -15,7 +18,7 @@ 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 ) +tile_data = PoolIntArray( 0, 1, 0, 1, 1, 0, 2, 1, 0, 3, 1, 0, 4, 0, 0, 5, 0, 0, 6, 0, 0, 7, 0, 0, 8, 0, 0, 9, 0, 0, 10, 0, 0, 11, 0, 0, 12, 0, 0, 13, 0, 0, 14, 0, 0, 15, 0, 0, 16, 0, 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, 65540, 0, 0, 65541, 0, 0, 65542, 0, 0, 65543, 0, 0, 65544, 0, 0, 65545, 0, 0, 65546, 0, 0, 65547, 0, 0, 65548, 0, 0, 65549, 0, 0, 65550, 0, 0, 65551, 0, 0, 65552, 0, 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, 131076, 0, 0, 131077, 0, 0, 131078, 0, 0, 131079, 0, 0, 131080, 0, 0, 131081, 0, 0, 131082, 0, 0, 131083, 0, 0, 131084, 0, 0, 131085, 0, 0, 131086, 0, 0, 131087, 0, 0, 131088, 0, 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, 196612, 0, 0, 196613, 0, 0, 196614, 0, 0, 196615, 0, 0, 196616, 0, 0, 196617, 0, 0, 196618, 0, 0, 196619, 0, 0, 196620, 0, 0, 196621, 0, 0, 196622, 0, 0, 196623, 0, 0, 196624, 0, 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, 262148, 0, 0, 262149, 0, 0, 262150, 0, 0, 262151, 0, 0, 262152, 0, 0, 262153, 0, 0, 262154, 0, 0, 262155, 0, 0, 262156, 0, 0, 262157, 0, 0, 262158, 0, 0, 262159, 0, 0, 262160, 0, 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, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 327687, 0, 0, 327688, 0, 0, 327689, 0, 0, 327690, 0, 0, 327691, 0, 0, 327692, 0, 0, 327693, 0, 0, 327694, 0, 0, 327695, 0, 0, 327696, 0, 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, 393220, 0, 0, 393221, 0, 0, 393222, 0, 0, 393223, 0, 0, 393224, 0, 0, 393225, 0, 0, 393226, 0, 0, 393227, 0, 0, 393228, 0, 0, 393229, 0, 0, 393230, 0, 0, 393231, 0, 0, 393232, 0, 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, 458756, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458760, 0, 0, 458761, 0, 0, 458762, 0, 0, 458763, 0, 0, 458764, 0, 0, 458765, 0, 0, 458766, 0, 0, 458767, 0, 0, 458768, 0, 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, 524292, 0, 0, 524293, 0, 0, 524294, 0, 0, 524295, 0, 0, 524296, 0, 0, 524297, 0, 0, 524298, 0, 0, 524299, 0, 0, 524300, 0, 0, 524301, 0, 0, 524302, 0, 0, 524303, 0, 0, 524304, 0, 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, 589828, 0, 0, 589829, 0, 0, 589830, 0, 0, 589831, 0, 0, 589832, 0, 0, 589833, 0, 0, 589834, 0, 0, 589835, 0, 0, 589836, 0, 0, 589837, 0, 0, 589838, 0, 0, 589839, 0, 0, 589840, 0, 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, 655364, 0, 0, 655365, 0, 0, 655366, 0, 0, 655367, 0, 0, 655368, 0, 0, 655369, 0, 0, 655370, 0, 0, 655371, 0, 0, 655372, 0, 0, 655373, 0, 0, 655374, 0, 0, 655375, 0, 0, 655376, 0, 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, 720900, 0, 0, 720901, 0, 0, 720902, 0, 0, 720903, 0, 0, 720904, 0, 0, 720905, 0, 0, 720906, 0, 0, 720907, 0, 0, 720908, 0, 0, 720909, 0, 0, 720910, 0, 0, 720911, 0, 0, 720912, 0, 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, 786436, 0, 0, 786437, 0, 0, 786438, 0, 0, 786439, 0, 0, 786440, 0, 0, 786441, 0, 0, 786442, 0, 0, 786443, 0, 0, 786444, 0, 0, 786445, 0, 0, 786446, 0, 0, 786447, 0, 0, 786448, 0, 0, 786449, 1, 0, 786450, 1, 0, 786451, 1, 0, 786452, 1, 0 ) [node name="UI" parent="." instance=ExtResource( 1 )] diff --git a/images/mota_tileset.tres b/images/mota_tileset.tres index 5fe6d98..08f24a5 100644 --- a/images/mota_tileset.tres +++ b/images/mota_tileset.tres @@ -1,10 +1,7 @@ -[gd_resource type="TileSet" load_steps=4 format=2] +[gd_resource type="TileSet" load_steps=3 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 ) ] @@ -20,16 +17,9 @@ polygons = [ PoolIntArray( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ) ] 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/shape_one_way_margin = 0.0 +0/shapes = [ ] 0/z_index = 0 1/name = "mota.png 1" 1/texture = ExtResource( 1 ) diff --git a/project.godot b/project.godot index 7210a5f..e495e40 100644 --- a/project.godot +++ b/project.godot @@ -39,6 +39,11 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://scripts/KeySprite.gd" }, { +"base": "AnimatedSprite", +"class": "MonsterSprite", +"language": "GDScript", +"path": "res://scripts/MonsterSprite.gd" +}, { "base": "TileMap", "class": "NavigationTileMap", "language": "GDScript", @@ -66,6 +71,7 @@ _global_script_class_icons={ "DoorStaticBody2D": "", "ElixirsSprite": "", "KeySprite": "", +"MonsterSprite": "", "NavigationTileMap": "", "PlayerKinematicBody2D": "", "PlayerSprite": "", @@ -87,6 +93,7 @@ config/icon="res://settings/icon.png" GameFloorManager="*res://scripts/GameFloorManager.gd" GameArchiveManager="*res://scripts/GameArchiveManager.gd" AffectAudioPlayer="*res://scripts/AffectAudioPlayer.gd" +MonsterBook="*res://scripts/MonsterBook.gd" [debug] @@ -103,7 +110,6 @@ window/stretch/aspect="keep" [rendering] -quality/driver/fallback_to_gles2=true quality/intended_usage/framebuffer_allocation=0 quality/intended_usage/framebuffer_allocation.mobile=0 quality/2d/use_pixel_snap=true diff --git a/scenes/Monster.tscn b/scenes/Monster.tscn new file mode 100644 index 0000000..4be7911 --- /dev/null +++ b/scenes/Monster.tscn @@ -0,0 +1,403 @@ +[gd_scene load_steps=63 format=2] + +[ext_resource path="res://images/mota.png" type="Texture" id=1] +[ext_resource path="res://scripts/MonsterSprite.gd" type="Script" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 1 ) +region = Rect2( 0, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 1 ) +region = Rect2( 32, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 1 ) +region = Rect2( 32, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=5] +atlas = ExtResource( 1 ) +region = Rect2( 0, 64, 32, 32 ) + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 1 ) +region = Rect2( 32, 64, 32, 32 ) + +[sub_resource type="AtlasTexture" id=7] +atlas = ExtResource( 1 ) +region = Rect2( 192, 96, 32, 32 ) + +[sub_resource type="AtlasTexture" id=8] +atlas = ExtResource( 1 ) +region = Rect2( 224, 96, 32, 32 ) + +[sub_resource type="AtlasTexture" id=9] +atlas = ExtResource( 1 ) +region = Rect2( 64, 160, 32, 32 ) + +[sub_resource type="AtlasTexture" id=10] +atlas = ExtResource( 1 ) +region = Rect2( 96, 160, 32, 32 ) + +[sub_resource type="AtlasTexture" id=11] +atlas = ExtResource( 1 ) +region = Rect2( 192, 64, 32, 32 ) + +[sub_resource type="AtlasTexture" id=12] +atlas = ExtResource( 1 ) +region = Rect2( 224, 64, 32, 32 ) + +[sub_resource type="AtlasTexture" id=13] +atlas = ExtResource( 1 ) +region = Rect2( 256, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=14] +atlas = ExtResource( 1 ) +region = Rect2( 288, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=15] +atlas = ExtResource( 1 ) +region = Rect2( 256, 64, 32, 32 ) + +[sub_resource type="AtlasTexture" id=16] +atlas = ExtResource( 1 ) +region = Rect2( 288, 64, 32, 32 ) + +[sub_resource type="AtlasTexture" id=17] +atlas = ExtResource( 1 ) +region = Rect2( 64, 128, 32, 32 ) + +[sub_resource type="AtlasTexture" id=18] +atlas = ExtResource( 1 ) +region = Rect2( 96, 128, 32, 32 ) + +[sub_resource type="AtlasTexture" id=19] +atlas = ExtResource( 1 ) +region = Rect2( 128, 96, 32, 32 ) + +[sub_resource type="AtlasTexture" id=20] +atlas = ExtResource( 1 ) +region = Rect2( 160, 96, 32, 32 ) + +[sub_resource type="AtlasTexture" id=21] +atlas = ExtResource( 1 ) +region = Rect2( 64, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=22] +atlas = ExtResource( 1 ) +region = Rect2( 96, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=23] +atlas = ExtResource( 1 ) +region = Rect2( 256, 96, 32, 32 ) + +[sub_resource type="AtlasTexture" id=24] +atlas = ExtResource( 1 ) +region = Rect2( 288, 96, 32, 32 ) + +[sub_resource type="AtlasTexture" id=25] +atlas = ExtResource( 1 ) +region = Rect2( 192, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=26] +atlas = ExtResource( 1 ) +region = Rect2( 224, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=27] +atlas = ExtResource( 1 ) +region = Rect2( 256, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=28] +atlas = ExtResource( 1 ) +region = Rect2( 288, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=29] +atlas = ExtResource( 1 ) +region = Rect2( 64, 64, 32, 32 ) + +[sub_resource type="AtlasTexture" id=30] +atlas = ExtResource( 1 ) +region = Rect2( 96, 64, 32, 32 ) + +[sub_resource type="AtlasTexture" id=31] +atlas = ExtResource( 1 ) +region = Rect2( 128, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=32] +atlas = ExtResource( 1 ) +region = Rect2( 160, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=33] +atlas = ExtResource( 1 ) +region = Rect2( 0, 160, 32, 32 ) + +[sub_resource type="AtlasTexture" id=34] +atlas = ExtResource( 1 ) +region = Rect2( 32, 160, 32, 32 ) + +[sub_resource type="AtlasTexture" id=35] +atlas = ExtResource( 1 ) +region = Rect2( 0, 96, 32, 32 ) + +[sub_resource type="AtlasTexture" id=36] +atlas = ExtResource( 1 ) +region = Rect2( 32, 96, 32, 32 ) + +[sub_resource type="AtlasTexture" id=37] +atlas = ExtResource( 1 ) +region = Rect2( 64, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=38] +atlas = ExtResource( 1 ) +region = Rect2( 96, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=39] +atlas = ExtResource( 1 ) +region = Rect2( 192, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=40] +atlas = ExtResource( 1 ) +region = Rect2( 224, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=41] +atlas = ExtResource( 1 ) +region = Rect2( 128, 128, 32, 32 ) + +[sub_resource type="AtlasTexture" id=42] +atlas = ExtResource( 1 ) +region = Rect2( 160, 128, 32, 32 ) + +[sub_resource type="AtlasTexture" id=43] +atlas = ExtResource( 1 ) +region = Rect2( 128, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=44] +atlas = ExtResource( 1 ) +region = Rect2( 160, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=45] +atlas = ExtResource( 1 ) +region = Rect2( 128, 64, 32, 32 ) + +[sub_resource type="AtlasTexture" id=46] +atlas = ExtResource( 1 ) +region = Rect2( 160, 64, 32, 32 ) + +[sub_resource type="AtlasTexture" id=47] +atlas = ExtResource( 1 ) +region = Rect2( 0, 128, 32, 32 ) + +[sub_resource type="AtlasTexture" id=48] +atlas = ExtResource( 1 ) +region = Rect2( 32, 128, 32, 32 ) + +[sub_resource type="AtlasTexture" id=49] +atlas = ExtResource( 1 ) +region = Rect2( 256, 128, 32, 32 ) + +[sub_resource type="AtlasTexture" id=50] +atlas = ExtResource( 1 ) +region = Rect2( 288, 128, 32, 32 ) + +[sub_resource type="AtlasTexture" id=51] +atlas = ExtResource( 1 ) +region = Rect2( 256, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=52] +atlas = ExtResource( 1 ) +region = Rect2( 288, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=53] +atlas = ExtResource( 1 ) +region = Rect2( 64, 96, 32, 32 ) + +[sub_resource type="AtlasTexture" id=54] +atlas = ExtResource( 1 ) +region = Rect2( 96, 96, 32, 32 ) + +[sub_resource type="AtlasTexture" id=55] +atlas = ExtResource( 1 ) +region = Rect2( 192, 128, 32, 32 ) + +[sub_resource type="AtlasTexture" id=56] +atlas = ExtResource( 1 ) +region = Rect2( 224, 128, 32, 32 ) + +[sub_resource type="SpriteFrames" id=57] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ) ], +"loop": true, +"name": "skeleton", +"speed": 5.0 +}, { +"frames": [ SubResource( 3 ), SubResource( 4 ) ], +"loop": true, +"name": "greenSlime", +"speed": 5.0 +}, { +"frames": [ SubResource( 5 ), SubResource( 6 ) ], +"loop": true, +"name": "zombie", +"speed": 5.0 +}, { +"frames": [ SubResource( 7 ), SubResource( 8 ) ], +"loop": true, +"name": "blueGuard", +"speed": 5.0 +}, { +"frames": [ SubResource( 9 ), SubResource( 10 ) ], +"loop": true, +"name": "darkKnight", +"speed": 5.0 +}, { +"frames": [ SubResource( 11 ), SubResource( 12 ) ], +"loop": true, +"name": "slimeMan", +"speed": 5.0 +}, { +"frames": [ SubResource( 13 ), SubResource( 14 ) ], +"loop": true, +"name": "bigBat", +"speed": 5.0 +}, { +"frames": [ SubResource( 15 ), SubResource( 16 ) ], +"loop": true, +"name": "slimelord", +"speed": 5.0 +}, { +"frames": [ SubResource( 17 ), SubResource( 18 ) ], +"loop": true, +"name": "yellowKnight", +"speed": 5.0 +}, { +"frames": [ SubResource( 19 ), SubResource( 20 ) ], +"loop": true, +"name": "yellowGuard", +"speed": 5.0 +}, { +"frames": [ SubResource( 21 ), SubResource( 22 ) ], +"loop": true, +"name": "redSlime", +"speed": 5.0 +}, { +"frames": [ SubResource( 23 ), SubResource( 24 ) ], +"loop": true, +"name": "redGuard", +"speed": 5.0 +}, { +"frames": [ SubResource( 25 ), SubResource( 26 ) ], +"loop": true, +"name": "bat", +"speed": 5.0 +}, { +"frames": [ SubResource( 27 ), SubResource( 28 ) ], +"loop": true, +"name": "vampire", +"speed": 5.0 +}, { +"frames": [ SubResource( 29 ), SubResource( 30 ) ], +"loop": true, +"name": "zombieKnight", +"speed": 5.0 +}, { +"frames": [ SubResource( 31 ), SubResource( 32 ) ], +"loop": true, +"name": "blackSlime", +"speed": 5.0 +}, { +"frames": [ SubResource( 33 ), SubResource( 34 ) ], +"loop": true, +"name": "ghostSkeleton", +"speed": 5.0 +}, { +"frames": [ SubResource( 35 ), SubResource( 36 ) ], +"loop": true, +"name": "brownWizard", +"speed": 5.0 +}, { +"frames": [ SubResource( 37 ), SubResource( 38 ) ], +"loop": true, +"name": "skeletonSoilder", +"speed": 5.0 +}, { +"frames": [ SubResource( 39 ), SubResource( 40 ) ], +"loop": true, +"name": "bluePriest", +"speed": 5.0 +}, { +"frames": [ SubResource( 41 ), SubResource( 42 ) ], +"loop": true, +"name": "redKnight", +"speed": 5.0 +}, { +"frames": [ SubResource( 43 ), SubResource( 44 ) ], +"loop": true, +"name": "skeletonCaptain", +"speed": 5.0 +}, { +"frames": [ SubResource( 45 ), SubResource( 46 ) ], +"loop": true, +"name": "rock", +"speed": 5.0 +}, { +"frames": [ SubResource( 47 ), SubResource( 48 ) ], +"loop": true, +"name": "redBat", +"speed": 5.0 +}, { +"frames": [ SubResource( 49 ), SubResource( 50 ) ], +"loop": true, +"name": "soldier", +"speed": 5.0 +}, { +"frames": [ SubResource( 51 ), SubResource( 52 ) ], +"loop": true, +"name": "redPriest", +"speed": 5.0 +}, { +"frames": [ SubResource( 53 ), SubResource( 54 ) ], +"loop": true, +"name": "redWizard", +"speed": 5.0 +}, { +"frames": [ SubResource( 55 ), SubResource( 56 ) ], +"loop": true, +"name": "swordsman", +"speed": 5.0 +} ] + +[sub_resource type="AtlasTexture" id=58] +atlas = ExtResource( 1 ) +region = Rect2( 288, 448, 32, 32 ) + +[sub_resource type="SpriteFrames" id=59] +animations = [ { +"frames": [ null, SubResource( 58 ) ], +"loop": true, +"name": "default", +"speed": 20.0 +} ] + +[sub_resource type="RectangleShape2D" id=60] + +[node name="MonsterSprite" type="AnimatedSprite"] +position = Vector2( 304, 144 ) +z_index = 1 +frames = SubResource( 57 ) +animation = "bat" +playing = true +script = ExtResource( 2 ) + +[node name="AtkSprite" type="AnimatedSprite" parent="."] +frames = SubResource( 59 ) + +[node name="Area2D" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource( 60 ) +[connection signal="animation_finished" from="AtkSprite" to="." method="_on_AtkSprite_animation_finished"] +[connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"] diff --git a/scenes/floors/Floor1.tscn b/scenes/floors/Floor1.tscn index c2e2167..5f71635 100644 --- a/scenes/floors/Floor1.tscn +++ b/scenes/floors/Floor1.tscn @@ -1,11 +1,8 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://images/mota_tileset.tres" type="TileSet" id=1] -[ext_resource path="res://scenes/Doore.tscn" type="PackedScene" id=2] [ext_resource path="res://scripts/NavigationTileMap.gd" type="Script" id=3] -[ext_resource path="res://scenes/Elixirs.tscn" type="PackedScene" id=4] [ext_resource path="res://scenes/Player.tscn" type="PackedScene" id=5] -[ext_resource path="res://scenes/Key.tscn" type="PackedScene" id=6] [node name="Floor1" type="Node2D"] @@ -14,52 +11,10 @@ tile_set = ExtResource( 1 ) 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 ) +tile_data = PoolIntArray( 65541, 2, 0, 65542, 2, 0, 65543, 2, 0, 65544, 2, 0, 65545, 2, 0, 65546, 2, 0, 65547, 2, 0, 65548, 2, 0, 65549, 2, 0, 65550, 2, 0, 65551, 2, 0, 131087, 2, 0, 196613, 2, 0, 196614, 2, 0, 196615, 2, 0, 196616, 2, 0, 196617, 2, 0, 196619, 2, 0, 196620, 2, 0, 196621, 2, 0, 196623, 2, 0, 262149, 2, 0, 262150, 2, 0, 262151, 2, 0, 262153, 2, 0, 262155, 2, 0, 262156, 2, 0, 262157, 2, 0, 262159, 2, 0, 327686, 2, 0, 327689, 2, 0, 327693, 2, 0, 327695, 2, 0, 393221, 2, 0, 393222, 2, 0, 393223, 2, 0, 393225, 2, 0, 393226, 2, 0, 393227, 2, 0, 393228, 2, 0, 393229, 2, 0, 393231, 2, 0, 458757, 2, 0, 458758, 2, 0, 458759, 2, 0, 458761, 2, 0, 458767, 2, 0, 524294, 2, 0, 524297, 2, 0, 524298, 2, 0, 524299, 2, 0, 524300, 2, 0, 524301, 2, 0, 524302, 2, 0, 524303, 2, 0, 589829, 2, 0, 589830, 2, 0, 589831, 2, 0, 589834, 2, 0, 589838, 2, 0, 655365, 2, 0, 655366, 2, 0, 655367, 2, 0, 655369, 2, 0, 655370, 2, 0, 655371, 2, 0, 655373, 2, 0, 655374, 2, 0, 655375, 2, 0, 720901, 2, 0, 720902, 2, 0, 720903, 2, 0, 720905, 2, 0, 720906, 2, 0, 720907, 2, 0, 720909, 2, 0, 720910, 2, 0, 720911, 2, 0 ) script = ExtResource( 3 ) [node name="Item" type="Node2D" parent="."] -[node name="KeySprite" parent="Item" instance=ExtResource( 6 )] - -[node name="KeySprite2" parent="Item" instance=ExtResource( 6 )] -position = Vector2( 336, 144 ) -region_rect = Rect2( 160, 448, 32, 32 ) -key_type = 2 - -[node name="KeySprite3" parent="Item" instance=ExtResource( 6 )] -position = Vector2( 336, 272 ) -region_rect = Rect2( 192, 448, 32, 32 ) -key_type = 3 - -[node name="KeySprite4" parent="Item" instance=ExtResource( 6 )] -position = Vector2( 240, 208 ) -region_rect = Rect2( 128, 448, 32, 32 ) -key_type = 1 - -[node name="DoorSprite" parent="Item" instance=ExtResource( 2 )] - -[node name="DoorSprite2" parent="Item" instance=ExtResource( 2 )] -position = Vector2( 368, 208 ) -region_rect = Rect2( 256, 480, 32, 32 ) -door_type = 2 - -[node name="DoorSprite3" parent="Item" instance=ExtResource( 2 )] -position = Vector2( 336, 176 ) -region_rect = Rect2( 288, 480, 32, 32 ) -door_type = 3 - -[node name="DoorSprite4" parent="Item" instance=ExtResource( 2 )] -position = Vector2( 336, 240 ) -region_rect = Rect2( 288, 480, 32, 32 ) -door_type = 3 - -[node name="ElixirsSprite" parent="Item" instance=ExtResource( 4 )] - -[node name="ElixirsSprite2" parent="Item" instance=ExtResource( 4 )] -position = Vector2( 240, 144 ) -region_rect = Rect2( 128, 416, 32, 32 ) -elixirs_color = 1 -elixirs_value = 200 - [node name="PlayerKinematicBody2D" parent="." instance=ExtResource( 5 )] -navigation_tile_map_path = NodePath("../../Floor1/NavigationTileMap") +position = Vector2( 336, 368 ) diff --git a/scripts/DoorStaticBody2D.gd b/scripts/DoorStaticBody2D.gd index 1c679f4..0485b1f 100644 --- a/scripts/DoorStaticBody2D.gd +++ b/scripts/DoorStaticBody2D.gd @@ -4,7 +4,7 @@ class_name DoorStaticBody2D onready var door_sprite : DoorSprite = get_parent() -func on_player_touched(): +func on_player_touched(player): match door_sprite.door_type: DoorSprite.DoorType.Yellow: if GameArchiveManager.player_info.yellow_key <= 0: diff --git a/scripts/GameArchiveManager.gd b/scripts/GameArchiveManager.gd index 82c6908..eeb58a5 100644 --- a/scripts/GameArchiveManager.gd +++ b/scripts/GameArchiveManager.gd @@ -13,9 +13,9 @@ var player_info = { #英雄血量 "hp" : 1000, # 英雄攻击力 - "atk" : 1, + "atk" : 10, # 英雄防御力 - "def" : 1, + "def" : 10, #默认金钱 "money" : 0, # 英雄等级 @@ -98,10 +98,20 @@ func load_by_index(index:int) -> void: var player = get_player() player.position = self.player_info.position #更新楼层UI显示 + update_floor_view() + update_hp_view() + update_key_view() + +# 更新楼层UI显示 +func update_floor_view(): $"/root/Main/UI/LevelBackground/LevelLabel".text = "魔塔 第%s层" % player_info.now_floor - #更新人物血量 + +# 更新人物血量 +func update_hp_view(): $"/root/Main/UI/HpSprite/HpBackground/HpLabel".text = player_info.hp as String - #更新钥匙数量显示 + +# 更新钥匙数量显示 +func update_key_view(): $"/root/Main/UI/KeyBackground/YellowKeyCountLabel".text = player_info.yellow_key as String $"/root/Main/UI/KeyBackground/BlueKeyCountLabel".text = player_info.blue_key as String $"/root/Main/UI/KeyBackground/RedKeyCountLabel".text = player_info.red_key as String diff --git a/scripts/MonsterBook.gd b/scripts/MonsterBook.gd new file mode 100644 index 0000000..8bef958 --- /dev/null +++ b/scripts/MonsterBook.gd @@ -0,0 +1,24 @@ +extends Node + +var monster_data : Dictionary + +# 根据json文件初始化怪物数据 +func _ready(): + var file = File.new() + file.open("res://monster.json",File.READ) + var json_result = JSON.parse(file.get_as_text()) + if json_result.error != OK: + print(json_result.error_string) + else: + monster_data = json_result.result + file.close() + +# 获取所有怪物名称 +func get_monsters_name() -> Array: + if monster_data == null: + return [] + return monster_data.keys() + +# 根据怪物名称获取怪物信息 +func get_info_by_name(name:String) -> Dictionary: + return monster_data[name] diff --git a/scripts/MonsterSprite.gd b/scripts/MonsterSprite.gd new file mode 100644 index 0000000..3dc7329 --- /dev/null +++ b/scripts/MonsterSprite.gd @@ -0,0 +1,41 @@ +extends AnimatedSprite + +class_name MonsterSprite + +var monster_info : Dictionary + +func _on_Area2D_body_entered(body): + # 查询怪物信息 + monster_info = MonsterBook.get_info_by_name(animation) + if monster_info == null: + print("未找到怪物",animation) + return + # 开始播放打斗动画 + $AtkSprite.playing = true + +# 打斗动画播放完成回调 +func _on_AtkSprite_animation_finished(): + var atk_sprite =$AtkSprite + atk_sprite.playing = false + var player_info = GameArchiveManager.player_info + monster_info.hp -= get_hurt(player_info.atk - monster_info.def) + if monster_info.hp <= 0: + dead() + return + player_info.hp -= get_hurt(monster_info.atk - player_info.def) + GameArchiveManager.update_hp_view() + if player_info.hp <=0: + print("game over") + else: + atk_sprite.playing = true + +func dead(): + GameArchiveManager.add_used_item(get_path()) + queue_free() + +# 计算伤害 +func get_hurt(hurt:int) -> int: + if hurt > 0: + return hurt + else: + return 0 diff --git a/scripts/PlayerKinematicBody2D.gd b/scripts/PlayerKinematicBody2D.gd index cd6d8a1..a1bff4f 100644 --- a/scripts/PlayerKinematicBody2D.gd +++ b/scripts/PlayerKinematicBody2D.gd @@ -50,4 +50,4 @@ func call_collider(collision:KinematicCollision2D): if collider is TileMap: return if collider.has_method("on_player_touched"): - collider.on_player_touched() + collider.call("on_player_touched",self)