diff --git a/objects/brick_player.tscn b/objects/brick_player.tscn index 80d3322..9d6cb18 100644 --- a/objects/brick_player.tscn +++ b/objects/brick_player.tscn @@ -15,7 +15,7 @@ size = Vector2(16, 31) [node name="Brick Player" type="CharacterBody2D"] collision_layer = 4 -collision_mask = 3 +collision_mask = 11 script = ExtResource("1_8j4h4") [node name="Root" type="Node2D" parent="."] diff --git a/objects/bullet.tscn b/objects/bullet.tscn new file mode 100644 index 0000000..7b91897 --- /dev/null +++ b/objects/bullet.tscn @@ -0,0 +1,41 @@ +[gd_scene load_steps=5 format=3 uid="uid://bhc7y4xugu4q7"] + +[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_w543f"] +[ext_resource type="Script" path="res://scripts/components/damage.gd" id="2_qkwsu"] +[ext_resource type="Script" path="res://scripts/components/bullet.gd" id="3_keogl"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_txsw8"] +radius = 4.0 + +[node name="Bullet" type="Area2D"] +collision_layer = 8 +collision_mask = 5 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_txsw8") + +[node name="Sprite2D" type="Sprite2D" parent="."] +scale = Vector2(0.5, 0.5) +texture = ExtResource("1_w543f") +hframes = 12 +vframes = 12 +frame = 79 + +[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."] +position = Vector2(2.38419e-07, 2.38419e-07) +scale = Vector2(0.4, 0.4) + +[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")] +script = ExtResource("2_qkwsu") +area2d = NodePath("..") + +[node name="BulletComponent" type="Node2D" parent="." node_paths=PackedStringArray("root", "area2d", "visibility_notifier", "timer")] +script = ExtResource("3_keogl") +root = NodePath("..") +speed = 100.0 +area2d = NodePath("..") +visibility_notifier = NodePath("../VisibleOnScreenNotifier2D") +timer = NodePath("../Timer") + +[node name="Timer" type="Timer" parent="."] +autostart = true diff --git a/objects/coin.tscn b/objects/coin.tscn index a5dc239..b733272 100644 --- a/objects/coin.tscn +++ b/objects/coin.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=5 format=3 uid="uid://54w4wisfj8v8"] +[gd_scene load_steps=6 format=3 uid="uid://54w4wisfj8v8"] [ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_epuj5"] [ext_resource type="Script" path="res://scripts/components/collectable.gd" id="2_y0k47"] [ext_resource type="Resource" uid="uid://vql535ckoeqm" path="res://resources/collectables/coin.tres" id="3_fm2fq"] +[ext_resource type="Script" path="res://scripts/components/fade_away.gd" id="4_fx1h2"] [sub_resource type="CircleShape2D" id="CircleShape2D_3ask2"] radius = 9.0 @@ -24,3 +25,10 @@ frame = 51 script = ExtResource("2_y0k47") area2d = NodePath("..") collectable_data = ExtResource("3_fm2fq") + +[node name="FadeAwayComponent" type="Node" parent="." node_paths=PackedStringArray("sprite2d", "root", "area2d")] +script = ExtResource("4_fx1h2") +sprite2d = NodePath("../Sprite2D") +fade_duration = 0.4 +root = NodePath("..") +area2d = NodePath("..") diff --git a/objects/enemy.tscn b/objects/enemy.tscn new file mode 100644 index 0000000..a598d66 --- /dev/null +++ b/objects/enemy.tscn @@ -0,0 +1,59 @@ +[gd_scene load_steps=8 format=3 uid="uid://bwdlmualj6xbw"] + +[ext_resource type="Texture2D" uid="uid://xes6mt2dd5gu" path="res://sprites/robot_cutout.png" id="1_uh38l"] +[ext_resource type="Script" path="res://scripts/components/health.gd" id="2_o170m"] +[ext_resource type="Script" path="res://scripts/components/damage.gd" id="3_8jl3u"] +[ext_resource type="Script" path="res://scripts/components/side_to_side_movement.gd" id="4_gbsq8"] +[ext_resource type="Script" path="res://scripts/components/periodic_shooting.gd" id="5_m03v0"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_pwwji"] +size = Vector2(18, 27) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ejbqt"] +size = Vector2(18, 27) + +[node name="Enemy" type="CharacterBody2D"] +collision_layer = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(0, 0.5) +shape = SubResource("RectangleShape2D_pwwji") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("1_uh38l") + +[node name="HealthComponent" type="Node" parent="."] +script = ExtResource("2_o170m") + +[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")] +script = ExtResource("3_8jl3u") +area2d = NodePath("../Hitbox") + +[node name="SideToSideMovement" type="Node" parent="." node_paths=PackedStringArray("root", "sprite2d", "left_ray", "right_ray")] +script = ExtResource("4_gbsq8") +root = NodePath("..") +sprite2d = NodePath("../Sprite2D") +speed = 60.0 +wait_time = 0.5 +left_ray = NodePath("../Left Ray") +right_ray = NodePath("../Right Ray") + +[node name="PeriodicShootingComponent" type="Node" parent="." node_paths=PackedStringArray("side_to_side_movement", "root")] +script = ExtResource("5_m03v0") +side_to_side_movement = NodePath("../SideToSideMovement") +root = NodePath("..") + +[node name="Hitbox" type="Area2D" parent="."] +collision_layer = 8 +collision_mask = 4 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2(0, 0.5) +shape = SubResource("RectangleShape2D_ejbqt") +debug_color = Color(0.913521, 0.265052, 0.323172, 0.42) + +[node name="Left Ray" type="RayCast2D" parent="."] +position = Vector2(-16, 13) + +[node name="Right Ray" type="RayCast2D" parent="."] +position = Vector2(16, 13) diff --git a/project.godot b/project.godot index 33f6b53..35c1b46 100644 --- a/project.godot +++ b/project.godot @@ -74,6 +74,7 @@ down={ 2d_physics/layer_1="Terrain" 2d_physics/layer_2="Collectible Entities" 2d_physics/layer_3="Player" +2d_physics/layer_4="Enemy" [rendering] diff --git a/scenes/test.tscn b/scenes/test.tscn index f36e970..f3cde41 100644 --- a/scenes/test.tscn +++ b/scenes/test.tscn @@ -6,7 +6,7 @@ [ext_resource type="PackedScene" uid="uid://54w4wisfj8v8" path="res://objects/coin.tscn" id="3_ygehw"] [ext_resource type="PackedScene" uid="uid://bqi5s710xb1ju" path="res://objects/brick_player.tscn" id="4_hetw8"] [ext_resource type="PackedScene" uid="uid://ct8fim6mduyl3" path="res://objects/collapsing_bridge.tscn" id="6_84ckv"] -[ext_resource type="PackedScene" uid="uid://dmvipsoauefs3" path="res://objects/damage_test.tscn" id="7_a6wgf"] +[ext_resource type="PackedScene" uid="uid://bwdlmualj6xbw" path="res://objects/enemy.tscn" id="7_qgddg"] [sub_resource type="Gradient" id="Gradient_anvhr"] offsets = PackedFloat32Array(1) @@ -391,19 +391,19 @@ scale = Vector2(4.05664, 753) texture = SubResource("GradientTexture1D_uhg81") [node name="Background Layer" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("AAAKAP7/AAAAAAYAAAAKAP//AAAAAAcAAAALAP7/AAABAAYAAAALAP//AAABAAcAAAALAAAAAAABAAgAAAALAAEAAAABAAkAAAAMAP7/AAACAAYAAAAMAP//AAACAAcAAAAMAAAAAAACAAgAAAATAAAAAAAAAAYAAAATAAEAAAAAAAcAAAAUAAAAAAABAAYAAAAUAAEAAAABAAcAAAAUAAIAAAABAAgAAAAUAAMAAAABAAkAAAAVAAAAAAACAAYAAAAVAAEAAAACAAcAAAAVAAIAAAACAAgAAAAbAPb/AAAAAAYAAAAbAPf/AAAAAAcAAAAcAPb/AAABAAYAAAAcAPf/AAABAAcAAAAcAPj/AAABAAgAAAAcAPn/AAABAAkAAAAdAPb/AAACAAYAAAAdAPf/AAACAAcAAAAdAPj/AAACAAgAAAAPAPb/AAAAAAYAAAAPAPf/AAAAAAcAAAAQAPb/AAABAAYAAAAQAPf/AAABAAcAAAAQAPj/AAABAAgAAAAQAPn/AAABAAkAAAARAPb/AAACAAYAAAARAPf/AAACAAcAAAARAPj/AAACAAgAAAA=") +tile_map_data = PackedByteArray("AAAKAP7/AAAAAAYAAAAKAP//AAAAAAcAAAALAP7/AAABAAYAAAALAP//AAABAAcAAAALAAAAAAABAAgAAAALAAEAAAABAAkAAAAMAP7/AAACAAYAAAAMAP//AAACAAcAAAAMAAAAAAACAAgAAAATAAAAAAAAAAYAAAATAAEAAAAAAAcAAAAUAAAAAAABAAYAAAAUAAEAAAABAAcAAAAUAAIAAAABAAgAAAAUAAMAAAABAAkAAAAVAAAAAAACAAYAAAAVAAEAAAACAAcAAAAVAAIAAAACAAgAAAAbAPb/AAAAAAYAAAAbAPf/AAAAAAcAAAAcAPb/AAABAAYAAAAcAPf/AAABAAcAAAAcAPj/AAABAAgAAAAcAPn/AAABAAkAAAAdAPb/AAACAAYAAAAdAPf/AAACAAcAAAAdAPj/AAACAAgAAAAPAPb/AAAAAAYAAAAPAPf/AAAAAAcAAAAQAPb/AAABAAYAAAAQAPf/AAABAAcAAAAQAPj/AAABAAgAAAAQAPn/AAABAAkAAAARAPb/AAACAAYAAAARAPf/AAACAAcAAAARAPj/AAACAAgAAAD3//z/AAALAAUAAAA=") tile_set = SubResource("TileSet_7ri0q") [node name="Terrain Layer" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("AAD8////AAABAAAAAAD9////AAABAAAAAAD+////AAABAAAAAAD/////AAABAAAAAAAAAP//AAABAAAAAAABAP//AAABAAAAAAABAAAAAAABAAEAAAABAAEAAAABAAEAAAAAAAEAAAABAAEAAAD//wEAAAABAAEAAAD+/wEAAAABAAEAAAD9/wEAAAABAAEAAAD8/wEAAAABAAEAAAD8/wAAAAABAAEAAAD9/wAAAAABAAEAAAD+/wAAAAABAAEAAAD//wAAAAABAAEAAAAAAAAAAAABAAEAAAACAP//AAABAAAAAAACAAAAAAABAAEAAAACAAEAAAABAAEAAAADAAEAAAABAAEAAAAEAAEAAAABAAEAAAAEAAAAAAABAAEAAAAEAP//AAABAAEAAAADAP//AAAGAAIAAAADAAAAAAABAAEAAAAFAAAAAAABAAEAAAAFAP//AAABAAEAAAAFAAEAAAABAAEAAAADAP7/AAAAAAEAAAADAP3/AAAAAAEAAAADAPz/AAAAAAEAAAADAPv/AAAAAAAAAAAEAPv/AAABAAAAAAAFAPv/AAACAAAAAAAFAPz/AAAFAAIAAAAFAP3/AAABAAEAAAAFAP7/AAABAAEAAAAEAP3/AAABAAEAAAAGAP3/AAABAAEAAAAGAPz/AAABAAAAAAAHAPz/AAACAAAAAAAHAP3/AAAFAAIAAAAIAP3/AAACAAAAAAAIAP7/AAACAAEAAAAIAP//AAACAAEAAAAIAAAAAAAFAAIAAAAJAAAAAAACAAAAAAAJAAEAAAACAAEAAAAJAAIAAAAFAAIAAAAKAAIAAAABAAAAAAALAAIAAAABAAAAAAAMAAIAAAABAAAAAAANAAIAAAAGAAIAAAANAAEAAAAAAAAAAAAOAAEAAAABAAAAAAAPAAEAAAABAAAAAAAQAAEAAAABAAAAAAARAAEAAAABAAAAAAASAAEAAAACAAAAAAASAAIAAAACAAEAAAASAAMAAAACAAEAAAARAAMAAAABAAEAAAAQAAMAAAABAAEAAAAPAAMAAAABAAEAAAAOAAMAAAABAAEAAAANAAMAAAABAAEAAAAMAAMAAAABAAEAAAALAAMAAAABAAEAAAAKAAMAAAABAAEAAAAJAAMAAAABAAEAAAAIAAMAAAABAAEAAAAHAAMAAAABAAEAAAAGAAMAAAABAAEAAAAGAAIAAAABAAEAAAAFAAIAAAABAAEAAAAEAAIAAAABAAEAAAADAAIAAAABAAEAAAACAAIAAAABAAEAAAABAAIAAAABAAEAAAAAAAIAAAABAAEAAAD//wIAAAABAAEAAAD+/wIAAAABAAEAAAD9/wIAAAABAAEAAAD8/wIAAAABAAEAAAD8/wMAAAABAAEAAAD9/wMAAAABAAEAAAD+/wMAAAABAAEAAAD+/wQAAAABAAEAAAD//wQAAAABAAEAAAAAAAQAAAABAAEAAAABAAQAAAABAAEAAAACAAQAAAABAAEAAAADAAQAAAABAAEAAAAEAAQAAAABAAEAAAAFAAQAAAABAAEAAAAGAAQAAAABAAEAAAAHAAQAAAABAAEAAAAIAAQAAAABAAEAAAAJAAQAAAABAAEAAAAKAAQAAAABAAEAAAALAAQAAAABAAEAAAAMAAQAAAABAAEAAAANAAQAAAABAAEAAAAOAAQAAAABAAEAAAAPAAQAAAABAAEAAAARAAIAAAABAAEAAAAQAAIAAAABAAEAAAAPAAIAAAABAAEAAAAOAAIAAAABAAEAAAAQAAQAAAABAAEAAAARAAQAAAABAAEAAAASAAQAAAAFAAIAAAAIAAIAAAABAAEAAAAHAAIAAAABAAEAAAAFAAMAAAABAAEAAAAEAAMAAAABAAEAAAADAAMAAAABAAEAAAACAAMAAAABAAEAAAABAAMAAAABAAEAAAAAAAMAAAABAAEAAAD//wMAAAABAAEAAAD9/wQAAAABAAEAAAD8/wQAAAABAAEAAAAIAAEAAAABAAEAAAAHAAEAAAABAAEAAAAHAAAAAAABAAEAAAAHAP//AAABAAEAAAAHAP7/AAABAAEAAAAGAAEAAAABAAEAAAAGAAAAAAABAAEAAAAGAP//AAABAAEAAAAGAP7/AAABAAEAAAAEAP7/AAABAAEAAAAEAPz/AAABAAEAAAAVAPz/AAABAAIAAAAUAPz/AAABAAIAAAATAP3/AAACAAIAAAASAP3/AAABAAIAAAARAP3/AAABAAIAAAAQAP3/AAABAAIAAAAPAP7/AAACAAIAAAAOAP7/AAAAAAIAAAAdAAQAAAABAAEAAAAcAAMAAAAAAAEAAAAbAAIAAAAAAAIAAAAaAAEAAAAAAAIAAAAZAAAAAAAAAAIAAAAZAP//AAAAAAEAAAAYAP7/AAAAAAIAAAAXAP3/AAAAAAIAAAAWAPz/AAABAAIAAAAcAAQAAAAGAAIAAAAbAAQAAAABAAAAAAAaAAQAAAABAAAAAAAZAAQAAAABAAAAAAAYAAQAAAABAAAAAAAXAAQAAAABAAAAAAAWAAQAAAABAAAAAAAVAAQAAAABAAAAAAAUAAQAAAABAAAAAAATAAQAAAABAAAAAAAdAAMAAAABAAEAAAAdAAIAAAABAAEAAAAcAAIAAAAGAAEAAAAcAAEAAAABAAEAAAAbAAEAAAAGAAEAAAAdAAEAAAABAAEAAAAdAAAAAAABAAEAAAAcAAAAAAABAAEAAAAbAAAAAAABAAEAAAAaAAAAAAAGAAEAAAAaAP//AAABAAEAAAAaAP7/AAABAAEAAAAZAP7/AAAGAAEAAAAZAP3/AAABAAEAAAAYAP3/AAAGAAEAAAAYAPz/AAABAAEAAAAXAPz/AAAGAAEAAAAZAPz/AAABAAEAAAAaAPz/AAABAAEAAAAaAP3/AAABAAEAAAAbAP3/AAABAAEAAAAbAP7/AAABAAEAAAAbAP//AAABAAEAAAAcAP//AAABAAEAAAAdAP//AAABAAEAAAAdAP7/AAABAAEAAAAcAP3/AAABAAEAAAAcAPz/AAABAAEAAAAbAPz/AAABAAEAAAAcAP7/AAABAAEAAAAdAP3/AAABAAEAAAAdAPz/AAABAAEAAAAdAPv/AAABAAEAAAAcAPv/AAABAAEAAAAbAPv/AAABAAEAAAAaAPv/AAABAAEAAAAZAPv/AAABAAEAAAAYAPv/AAABAAEAAAAXAPv/AAABAAEAAAAWAPv/AAABAAEAAAAWAPr/AAABAAAAAAAVAPr/AAABAAAAAAAUAPr/AAABAAAAAAAUAPv/AAABAAEAAAAVAPv/AAABAAEAAAAXAPr/AAABAAAAAAAYAPr/AAABAAAAAAAZAPr/AAABAAAAAAAaAPr/AAABAAAAAAAbAPr/AAABAAAAAAAcAPr/AAABAAAAAAAdAPr/AAABAAAAAAATAPz/AAAFAAEAAAASAPz/AAABAAEAAAARAPz/AAABAAEAAAARAPv/AAABAAEAAAASAPv/AAABAAEAAAASAPr/AAABAAAAAAATAPr/AAABAAAAAAATAPv/AAABAAEAAAARAPr/AAABAAAAAAAQAPr/AAABAAAAAAAQAPv/AAABAAEAAAAQAPz/AAABAAEAAAAPAPz/AAABAAEAAAAPAP3/AAAFAAEAAAAOAP3/AAAAAAEAAAAOAPz/AAAAAAEAAAAOAPv/AAAAAAEAAAAPAPv/AAABAAEAAAAPAPr/AAABAAAAAAAOAPr/AAAAAAAAAAAdAAUAAAABAAIAAAAcAAUAAAABAAIAAAAbAAUAAAABAAIAAAAaAAUAAAABAAIAAAAZAAUAAAABAAIAAAAYAAUAAAABAAIAAAASAAUAAAABAAIAAAATAAUAAAABAAIAAAAUAAUAAAABAAIAAAAVAAUAAAABAAIAAAAWAAUAAAABAAIAAAAXAAUAAAABAAIAAAARAAUAAAABAAIAAAAQAAUAAAABAAIAAAAPAAUAAAABAAIAAAAOAAUAAAABAAIAAAANAAUAAAABAAIAAAAMAAUAAAABAAIAAAALAAUAAAABAAIAAAAKAAUAAAABAAIAAAAJAAUAAAABAAIAAAAIAAUAAAABAAIAAAAHAAUAAAABAAIAAAAGAAUAAAABAAIAAAAFAAUAAAABAAIAAAAEAAUAAAABAAIAAAADAAUAAAABAAIAAAACAAUAAAABAAIAAAABAAUAAAABAAIAAAAAAAUAAAABAAIAAAD//wUAAAABAAIAAAD+/wUAAAABAAIAAAD9/wUAAAABAAIAAAD8/wUAAAABAAIAAAAnAAUAAAACAAIAAAAnAAQAAAACAAEAAAAnAAMAAAACAAEAAAAnAAIAAAACAAEAAAAnAAEAAAACAAEAAAAnAAAAAAACAAEAAAAnAP//AAACAAEAAAAnAP7/AAACAAEAAAAnAP3/AAACAAEAAAAnAPz/AAACAAEAAAAnAPv/AAACAAEAAAAnAPr/AAACAAEAAAAmAAUAAAABAAIAAAAmAAQAAAABAAEAAAAmAAMAAAABAAEAAAAmAAIAAAABAAEAAAAmAAEAAAABAAEAAAAmAAAAAAABAAEAAAAmAP//AAABAAEAAAAmAP7/AAABAAEAAAAmAP3/AAABAAEAAAAmAPz/AAABAAEAAAAmAPv/AAABAAEAAAAmAPr/AAABAAEAAAAlAAUAAAABAAIAAAAlAAQAAAABAAEAAAAlAAMAAAABAAEAAAAlAAIAAAABAAEAAAAlAAEAAAABAAEAAAAlAAAAAAABAAEAAAAlAP//AAABAAEAAAAlAP7/AAABAAEAAAAlAP3/AAABAAEAAAAlAPz/AAABAAEAAAAlAPv/AAABAAEAAAAlAPr/AAABAAEAAAAkAAUAAAABAAIAAAAkAAQAAAABAAEAAAAkAAMAAAABAAEAAAAkAAIAAAABAAEAAAAkAAEAAAABAAEAAAAkAAAAAAABAAEAAAAkAP//AAABAAEAAAAkAP7/AAABAAEAAAAkAP3/AAABAAEAAAAkAPz/AAABAAEAAAAkAPv/AAABAAEAAAAkAPr/AAABAAEAAAAjAAUAAAABAAIAAAAjAAQAAAABAAEAAAAjAAMAAAABAAEAAAAjAAIAAAABAAEAAAAjAAEAAAABAAEAAAAjAAAAAAABAAEAAAAjAP//AAABAAEAAAAjAP7/AAABAAEAAAAjAP3/AAABAAEAAAAjAPz/AAABAAEAAAAjAPv/AAABAAEAAAAjAPr/AAABAAEAAAAiAAUAAAABAAIAAAAiAAQAAAABAAEAAAAiAAMAAAABAAEAAAAiAAIAAAABAAEAAAAiAAEAAAABAAEAAAAiAAAAAAABAAEAAAAiAP//AAABAAEAAAAiAP7/AAABAAEAAAAiAP3/AAABAAEAAAAiAPz/AAABAAEAAAAiAPv/AAABAAEAAAAiAPr/AAABAAEAAAAhAAUAAAABAAIAAAAhAAQAAAABAAEAAAAhAAMAAAABAAEAAAAhAAIAAAABAAEAAAAhAAEAAAABAAEAAAAhAAAAAAABAAEAAAAhAP//AAABAAEAAAAhAP7/AAABAAEAAAAhAP3/AAABAAEAAAAhAPz/AAABAAEAAAAhAPv/AAABAAEAAAAhAPr/AAABAAEAAAAgAAUAAAABAAIAAAAgAAQAAAABAAEAAAAgAAMAAAABAAEAAAAgAAIAAAABAAEAAAAgAAEAAAABAAEAAAAgAAAAAAABAAEAAAAgAP//AAABAAEAAAAgAP7/AAABAAEAAAAgAP3/AAABAAEAAAAgAPz/AAABAAEAAAAgAPv/AAABAAEAAAAgAPr/AAAGAAIAAAAfAAUAAAABAAIAAAAfAAQAAAABAAEAAAAfAAMAAAABAAEAAAAfAAIAAAABAAEAAAAfAAEAAAABAAEAAAAfAAAAAAABAAEAAAAfAP//AAABAAEAAAAfAP7/AAABAAEAAAAfAP3/AAABAAEAAAAfAPz/AAABAAEAAAAfAPv/AAABAAEAAAAfAPr/AAABAAAAAAAeAAUAAAABAAIAAAAeAAQAAAABAAEAAAAeAAMAAAABAAEAAAAeAAIAAAABAAEAAAAeAAEAAAABAAEAAAAeAAAAAAABAAEAAAAeAP//AAABAAEAAAAeAP7/AAABAAEAAAAeAP3/AAABAAEAAAAeAPz/AAABAAEAAAAeAPv/AAABAAEAAAAeAPr/AAABAAAAAAAnAPn/AAACAAEAAAAnAPj/AAACAAEAAAAnAPf/AAACAAEAAAAnAPb/AAACAAEAAAAnAPX/AAACAAEAAAAnAPT/AAAFAAEAAAAnAPP/AAABAAEAAAAnAPL/AAABAAEAAAAnAPH/AAABAAEAAAAnAPD/AAABAAEAAAAmAPn/AAABAAEAAAAmAPj/AAABAAEAAAAmAPf/AAABAAEAAAAmAPb/AAABAAEAAAAmAPX/AAABAAEAAAAmAPT/AAABAAEAAAAmAPP/AAABAAEAAAAmAPL/AAABAAEAAAAmAPH/AAABAAEAAAAmAPD/AAABAAEAAAAlAPn/AAABAAEAAAAlAPj/AAABAAEAAAAlAPf/AAABAAEAAAAlAPb/AAABAAEAAAAlAPX/AAABAAEAAAAlAPT/AAABAAEAAAAlAPP/AAABAAEAAAAlAPL/AAABAAEAAAAlAPH/AAABAAEAAAAlAPD/AAABAAEAAAAkAPn/AAABAAEAAAAkAPj/AAABAAEAAAAkAPf/AAABAAEAAAAkAPb/AAABAAEAAAAkAPX/AAABAAEAAAAkAPT/AAABAAEAAAAkAPP/AAABAAEAAAAkAPL/AAABAAEAAAAkAPH/AAABAAEAAAAkAPD/AAABAAEAAAAjAPn/AAABAAEAAAAjAPj/AAABAAEAAAAjAPf/AAABAAEAAAAjAPb/AAABAAEAAAAjAPX/AAABAAEAAAAjAPT/AAABAAEAAAAjAPP/AAABAAEAAAAjAPL/AAABAAEAAAAjAPH/AAABAAEAAAAjAPD/AAABAAEAAAAiAPn/AAABAAEAAAAiAPj/AAABAAEAAAAiAPf/AAABAAEAAAAiAPb/AAABAAEAAAAiAPX/AAABAAEAAAAiAPT/AAABAAEAAAAiAPP/AAABAAEAAAAiAPL/AAABAAEAAAAiAPH/AAABAAEAAAAiAPD/AAABAAEAAAAhAPn/AAABAAEAAAAhAPj/AAABAAEAAAAhAPf/AAABAAEAAAAhAPb/AAABAAEAAAAhAPX/AAABAAEAAAAhAPT/AAABAAEAAAAhAPP/AAABAAEAAAAhAPL/AAABAAEAAAAhAPH/AAABAAEAAAAhAPD/AAABAAEAAAAgAPn/AAAAAAEAAAAgAPj/AAAAAAEAAAAgAPf/AAAAAAEAAAAgAPb/AAAAAAEAAAAgAPX/AAAAAAEAAAAgAPT/AAAAAAEAAAAgAPP/AAAAAAEAAAAgAPL/AAAAAAEAAAAgAPH/AAAAAAEAAAAgAPD/AAAAAAEAAAApAO//AAACAAEAAAApAO7/AAACAAEAAAApAO3/AAACAAEAAAApAOz/AAACAAEAAAApAOv/AAACAAEAAAApAOr/AAACAAAAAAAoAO//AAABAAEAAAAoAO7/AAABAAEAAAAoAO3/AAABAAEAAAAoAOz/AAABAAEAAAAoAOv/AAABAAEAAAAoAOr/AAABAAAAAAAnAO//AAABAAEAAAAnAO7/AAABAAEAAAAnAO3/AAABAAEAAAAnAOz/AAABAAEAAAAnAOv/AAABAAEAAAAnAOr/AAABAAAAAAAmAO//AAABAAEAAAAmAO7/AAABAAEAAAAmAO3/AAABAAEAAAAmAOz/AAABAAEAAAAmAOv/AAABAAEAAAAmAOr/AAABAAAAAAAlAO//AAABAAEAAAAlAO7/AAABAAEAAAAlAO3/AAABAAEAAAAlAOz/AAABAAEAAAAlAOv/AAABAAEAAAAlAOr/AAABAAAAAAAkAO//AAABAAEAAAAkAO7/AAABAAEAAAAkAO3/AAABAAEAAAAkAOz/AAABAAEAAAAkAOv/AAABAAEAAAAkAOr/AAABAAAAAAAjAO//AAABAAEAAAAjAO7/AAABAAEAAAAjAO3/AAABAAEAAAAjAOz/AAABAAEAAAAjAOv/AAABAAEAAAAjAOr/AAABAAAAAAAiAO//AAABAAEAAAAiAO7/AAABAAEAAAAiAO3/AAABAAEAAAAiAOz/AAABAAEAAAAiAOv/AAABAAEAAAAiAOr/AAABAAAAAAAhAO//AAABAAEAAAAhAO7/AAABAAEAAAAhAO3/AAABAAEAAAAhAOz/AAABAAEAAAAhAOv/AAABAAEAAAAhAOr/AAABAAAAAAAgAO//AAAGAAEAAAAgAO7/AAABAAEAAAAgAO3/AAABAAEAAAAgAOz/AAABAAEAAAAgAOv/AAABAAEAAAAgAOr/AAABAAAAAAApAPT/AAACAAIAAAApAPP/AAACAAEAAAApAPL/AAACAAEAAAApAPH/AAACAAEAAAApAPD/AAACAAEAAAAoAPT/AAABAAIAAAAoAPP/AAABAAEAAAAoAPL/AAABAAEAAAAoAPH/AAABAAEAAAAoAPD/AAABAAEAAAAfAO//AAABAAIAAAAfAO7/AAABAAEAAAAfAO3/AAABAAEAAAAfAOz/AAABAAEAAAAfAOv/AAABAAEAAAAfAOr/AAABAAAAAAAeAO//AAABAAIAAAAeAO7/AAABAAEAAAAeAO3/AAABAAEAAAAeAOz/AAABAAEAAAAeAOv/AAABAAEAAAAeAOr/AAABAAAAAAAdAO//AAABAAIAAAAdAO7/AAABAAEAAAAdAO3/AAABAAEAAAAdAOz/AAABAAEAAAAdAOv/AAABAAEAAAAdAOr/AAABAAAAAAAcAO//AAABAAIAAAAcAO7/AAABAAEAAAAcAO3/AAABAAEAAAAcAOz/AAABAAEAAAAcAOv/AAABAAEAAAAcAOr/AAABAAAAAAAbAO//AAABAAIAAAAbAO7/AAABAAEAAAAbAO3/AAABAAEAAAAbAOz/AAABAAEAAAAbAOv/AAABAAEAAAAbAOr/AAABAAAAAAAaAO//AAABAAIAAAAaAO7/AAABAAEAAAAaAO3/AAABAAEAAAAaAOz/AAABAAEAAAAaAOv/AAABAAEAAAAaAOr/AAABAAAAAAAZAO//AAABAAIAAAAZAO7/AAABAAEAAAAZAO3/AAABAAEAAAAZAOz/AAABAAEAAAAZAOv/AAABAAEAAAAZAOr/AAABAAAAAAAYAO//AAABAAIAAAAYAO7/AAABAAEAAAAYAO3/AAABAAEAAAAYAOz/AAABAAEAAAAYAOv/AAABAAEAAAAYAOr/AAABAAAAAAAXAO//AAABAAIAAAAXAO7/AAABAAEAAAAXAO3/AAABAAEAAAAXAOz/AAABAAEAAAAXAOv/AAABAAEAAAAXAOr/AAABAAAAAAAWAO//AAABAAIAAAAWAO7/AAABAAEAAAAWAO3/AAABAAEAAAAWAOz/AAABAAEAAAAWAOv/AAABAAEAAAAWAOr/AAABAAAAAAAVAO//AAABAAIAAAAVAO7/AAABAAEAAAAVAO3/AAABAAEAAAAVAOz/AAABAAEAAAAVAOv/AAABAAEAAAAVAOr/AAABAAAAAAAUAO//AAABAAIAAAAUAO7/AAABAAEAAAAUAO3/AAABAAEAAAAUAOz/AAABAAEAAAAUAOv/AAABAAEAAAAUAOr/AAABAAAAAAATAO//AAABAAIAAAATAO7/AAABAAEAAAATAO3/AAABAAEAAAATAOz/AAABAAEAAAATAOv/AAABAAEAAAATAOr/AAABAAAAAAASAO//AAABAAIAAAASAO7/AAABAAEAAAASAO3/AAABAAEAAAASAOz/AAABAAEAAAASAOv/AAABAAEAAAASAOr/AAABAAAAAAARAO//AAABAAIAAAARAO7/AAABAAEAAAARAO3/AAABAAEAAAARAOz/AAABAAEAAAARAOv/AAABAAEAAAARAOr/AAABAAAAAAAQAO//AAABAAIAAAAQAO7/AAABAAEAAAAQAO3/AAABAAEAAAAQAOz/AAABAAEAAAAQAOv/AAABAAEAAAAQAOr/AAABAAAAAAAPAO//AAABAAIAAAAPAO7/AAABAAEAAAAPAO3/AAABAAEAAAAPAOz/AAABAAEAAAAPAOv/AAABAAEAAAAPAOr/AAABAAAAAAAOAO//AAABAAIAAAAOAO7/AAABAAEAAAAOAO3/AAABAAEAAAAOAOz/AAABAAEAAAAOAOv/AAABAAEAAAAOAOr/AAABAAAAAAANAO//AAABAAIAAAANAO7/AAABAAEAAAANAO3/AAABAAEAAAANAOz/AAABAAEAAAANAOv/AAABAAEAAAANAOr/AAABAAAAAAAMAO//AAABAAIAAAAMAO7/AAABAAEAAAAMAO3/AAABAAEAAAAMAOz/AAABAAEAAAAMAOv/AAABAAEAAAAMAOr/AAABAAAAAAALAO//AAABAAIAAAALAO7/AAABAAEAAAALAO3/AAABAAEAAAALAOz/AAABAAEAAAALAOv/AAABAAEAAAALAOr/AAABAAAAAAAKAO//AAABAAIAAAAKAO7/AAABAAEAAAAKAO3/AAABAAEAAAAKAOz/AAABAAEAAAAKAOv/AAABAAEAAAAKAOr/AAABAAAAAAAJAO//AAABAAIAAAAJAO7/AAABAAEAAAAJAO3/AAABAAEAAAAJAOz/AAABAAEAAAAJAOv/AAABAAEAAAAJAOr/AAABAAAAAAAIAO//AAABAAIAAAAIAO7/AAABAAEAAAAIAO3/AAABAAEAAAAIAOz/AAABAAEAAAAIAOv/AAABAAEAAAAIAOr/AAABAAAAAAAHAO//AAABAAIAAAAHAO7/AAABAAEAAAAHAO3/AAABAAEAAAAHAOz/AAABAAEAAAAHAOv/AAABAAEAAAAHAOr/AAABAAAAAAAGAO//AAABAAIAAAAGAO7/AAABAAEAAAAGAO3/AAABAAEAAAAGAOz/AAABAAEAAAAGAOv/AAABAAEAAAAGAOr/AAABAAAAAAAFAO//AAABAAIAAAAFAO7/AAABAAEAAAAFAO3/AAABAAEAAAAFAOz/AAABAAEAAAAFAOv/AAABAAEAAAAFAOr/AAABAAAAAAAEAO//AAABAAIAAAAEAO7/AAABAAEAAAAEAO3/AAABAAEAAAAEAOz/AAABAAEAAAAEAOv/AAABAAEAAAAEAOr/AAABAAAAAAADAO//AAABAAIAAAADAO7/AAABAAEAAAADAO3/AAABAAEAAAADAOz/AAABAAEAAAADAOv/AAABAAEAAAADAOr/AAABAAAAAAACAO//AAABAAIAAAACAO7/AAABAAEAAAACAO3/AAABAAEAAAACAOz/AAABAAEAAAACAOv/AAABAAEAAAACAOr/AAABAAAAAAABAO//AAABAAIAAAABAO7/AAABAAEAAAABAO3/AAABAAEAAAABAOz/AAABAAEAAAABAOv/AAABAAEAAAABAOr/AAABAAAAAAAAAO//AAABAAIAAAAAAO7/AAABAAEAAAAAAO3/AAABAAEAAAAAAOz/AAABAAEAAAAAAOv/AAABAAEAAAAAAOr/AAABAAAAAAD//+//AAABAAIAAAD//+7/AAABAAEAAAD//+3/AAABAAEAAAD//+z/AAABAAEAAAD//+v/AAABAAEAAAD//+r/AAABAAAAAAD+/+//AAABAAIAAAD+/+7/AAABAAEAAAD+/+3/AAABAAEAAAD+/+z/AAABAAEAAAD+/+v/AAABAAEAAAD+/+r/AAABAAAAAAD9/+//AAABAAIAAAD9/+7/AAABAAEAAAD9/+3/AAABAAEAAAD9/+z/AAABAAEAAAD9/+v/AAABAAEAAAD9/+r/AAAFAAIAAAD9/+n/AAACAAAAAAD8/+//AAABAAIAAAD8/+7/AAABAAEAAAD8/+3/AAABAAEAAAD8/+z/AAABAAEAAAD8/+v/AAABAAEAAAD8/+r/AAABAAEAAAD8/+n/AAABAAAAAAD7/+//AAAFAAEAAAD7/+7/AAABAAEAAAD7/+3/AAABAAEAAAD7/+z/AAABAAEAAAD7/+v/AAABAAEAAAD7/+r/AAABAAEAAAD7/+n/AAABAAAAAAD6/+//AAABAAEAAAD6/+7/AAABAAEAAAD6/+3/AAABAAEAAAD6/+z/AAABAAEAAAD6/+v/AAABAAEAAAD6/+r/AAABAAEAAAD6/+n/AAABAAAAAAD5/+//AAABAAEAAAD5/+7/AAABAAEAAAD5/+3/AAABAAEAAAD5/+z/AAABAAEAAAD5/+v/AAABAAEAAAD5/+r/AAABAAEAAAD5/+n/AAABAAAAAAD4/+//AAABAAEAAAD4/+7/AAABAAEAAAD4/+3/AAABAAEAAAD4/+z/AAABAAEAAAD4/+v/AAABAAEAAAD4/+r/AAABAAEAAAD4/+n/AAABAAAAAAD3/+//AAABAAEAAAD3/+7/AAABAAEAAAD3/+3/AAABAAEAAAD3/+z/AAABAAEAAAD3/+v/AAABAAEAAAD3/+r/AAABAAEAAAD3/+n/AAABAAAAAAD2/+//AAABAAEAAAD2/+7/AAABAAEAAAD2/+3/AAABAAEAAAD2/+z/AAABAAEAAAD2/+v/AAABAAEAAAD2/+r/AAABAAEAAAD2/+n/AAABAAAAAAD1/+//AAAAAAEAAAD1/+7/AAAAAAEAAAD1/+3/AAAAAAEAAAD1/+z/AAAAAAEAAAD1/+v/AAAAAAEAAAD1/+r/AAAAAAEAAAD1/+n/AAAAAAAAAAD7/wUAAAABAAIAAAD7/wQAAAABAAEAAAD7/wMAAAABAAEAAAD7/wIAAAABAAEAAAD7/wEAAAABAAEAAAD7/wAAAAABAAEAAAD7////AAAFAAIAAAD7//7/AAACAAEAAAD7//3/AAACAAEAAAD7//z/AAACAAEAAAD7//v/AAACAAEAAAD7//r/AAACAAEAAAD7//n/AAACAAEAAAD7//j/AAACAAEAAAD7//f/AAACAAEAAAD7//b/AAACAAEAAAD7//X/AAACAAEAAAD7//T/AAACAAEAAAD7//P/AAACAAEAAAD7//L/AAACAAEAAAD7//H/AAACAAEAAAD7//D/AAACAAEAAAD6/wUAAAABAAIAAAD6/wQAAAABAAEAAAD6/wMAAAABAAEAAAD6/wIAAAABAAEAAAD6/wEAAAABAAEAAAD6/wAAAAABAAEAAAD6////AAABAAEAAAD6//7/AAABAAEAAAD6//3/AAABAAEAAAD6//z/AAABAAEAAAD6//v/AAABAAEAAAD6//r/AAABAAEAAAD6//n/AAABAAEAAAD6//j/AAABAAEAAAD6//f/AAABAAEAAAD6//b/AAABAAEAAAD6//X/AAABAAEAAAD6//T/AAABAAEAAAD6//P/AAABAAEAAAD6//L/AAABAAEAAAD6//H/AAABAAEAAAD6//D/AAABAAEAAAD5/wUAAAABAAIAAAD5/wQAAAABAAEAAAD5/wMAAAABAAEAAAD5/wIAAAABAAEAAAD5/wEAAAABAAEAAAD5/wAAAAABAAEAAAD5////AAABAAEAAAD5//7/AAABAAEAAAD5//3/AAABAAEAAAD5//z/AAABAAEAAAD5//v/AAABAAEAAAD5//r/AAABAAEAAAD5//n/AAABAAEAAAD5//j/AAABAAEAAAD5//f/AAABAAEAAAD5//b/AAABAAEAAAD5//X/AAABAAEAAAD5//T/AAABAAEAAAD5//P/AAABAAEAAAD5//L/AAABAAEAAAD5//H/AAABAAEAAAD5//D/AAABAAEAAAD4/wUAAAABAAIAAAD4/wQAAAABAAEAAAD4/wMAAAABAAEAAAD4/wIAAAABAAEAAAD4/wEAAAABAAEAAAD4/wAAAAABAAEAAAD4////AAABAAEAAAD4//7/AAABAAEAAAD4//3/AAABAAEAAAD4//z/AAABAAEAAAD4//v/AAABAAEAAAD4//r/AAABAAEAAAD4//n/AAABAAEAAAD4//j/AAABAAEAAAD4//f/AAABAAEAAAD4//b/AAABAAEAAAD4//X/AAABAAEAAAD4//T/AAABAAEAAAD4//P/AAABAAEAAAD4//L/AAABAAEAAAD4//H/AAABAAEAAAD4//D/AAABAAEAAAD3/wUAAAABAAIAAAD3/wQAAAABAAEAAAD3/wMAAAABAAEAAAD3/wIAAAABAAEAAAD3/wEAAAABAAEAAAD3/wAAAAABAAEAAAD3////AAABAAEAAAD3//7/AAABAAEAAAD3//3/AAABAAEAAAD3//z/AAABAAEAAAD3//v/AAABAAEAAAD3//r/AAABAAEAAAD3//n/AAABAAEAAAD3//j/AAABAAEAAAD3//f/AAABAAEAAAD3//b/AAABAAEAAAD3//X/AAABAAEAAAD3//T/AAABAAEAAAD3//P/AAABAAEAAAD3//L/AAABAAEAAAD3//H/AAABAAEAAAD3//D/AAABAAEAAAD2/wUAAAABAAIAAAD2/wQAAAABAAEAAAD2/wMAAAABAAEAAAD2/wIAAAABAAEAAAD2/wEAAAABAAEAAAD2/wAAAAABAAEAAAD2////AAABAAEAAAD2//7/AAABAAEAAAD2//3/AAABAAEAAAD2//z/AAABAAEAAAD2//v/AAABAAEAAAD2//r/AAABAAEAAAD2//n/AAABAAEAAAD2//j/AAABAAEAAAD2//f/AAABAAEAAAD2//b/AAABAAEAAAD2//X/AAABAAEAAAD2//T/AAABAAEAAAD2//P/AAABAAEAAAD2//L/AAABAAEAAAD2//H/AAABAAEAAAD2//D/AAABAAEAAAD1/wUAAAAAAAIAAAD1/wQAAAAAAAEAAAD1/wMAAAAAAAEAAAD1/wIAAAAAAAEAAAD1/wEAAAAAAAEAAAD1/wAAAAAAAAEAAAD1////AAAAAAEAAAD1//7/AAAAAAEAAAD1//3/AAAAAAEAAAD1//z/AAAAAAEAAAD1//v/AAAAAAEAAAD1//r/AAAAAAEAAAD1//n/AAAAAAEAAAD1//j/AAAAAAEAAAD1//f/AAAAAAEAAAD1//b/AAAAAAEAAAD1//X/AAAAAAEAAAD1//T/AAAAAAEAAAD1//P/AAAAAAEAAAD1//L/AAAAAAEAAAD1//H/AAAAAAEAAAD1//D/AAAAAAEAAAA=") +tile_map_data = PackedByteArray("AAD8////AAABAAAAAAD9////AAABAAAAAAD+////AAABAAAAAAD/////AAABAAAAAAAAAP//AAABAAAAAAABAP//AAABAAAAAAABAAAAAAABAAEAAAABAAEAAAABAAEAAAAAAAEAAAABAAEAAAD//wEAAAABAAEAAAD+/wEAAAABAAEAAAD9/wEAAAABAAEAAAD8/wEAAAABAAEAAAD8/wAAAAABAAEAAAD9/wAAAAABAAEAAAD+/wAAAAABAAEAAAD//wAAAAABAAEAAAAAAAAAAAABAAEAAAACAP//AAABAAAAAAACAAAAAAABAAEAAAACAAEAAAABAAEAAAADAAEAAAABAAEAAAAEAAEAAAABAAEAAAAEAAAAAAABAAEAAAAEAP//AAABAAEAAAADAP//AAAGAAIAAAADAAAAAAABAAEAAAAFAAAAAAABAAEAAAAFAP//AAABAAEAAAAFAAEAAAABAAEAAAADAP7/AAAAAAEAAAADAP3/AAAAAAEAAAADAPz/AAAAAAEAAAADAPv/AAAAAAAAAAAEAPv/AAABAAAAAAAFAPv/AAACAAAAAAAFAPz/AAAFAAIAAAAFAP3/AAABAAEAAAAFAP7/AAABAAEAAAAEAP3/AAABAAEAAAAGAP3/AAABAAEAAAAGAPz/AAABAAAAAAAHAPz/AAACAAAAAAAHAP3/AAAFAAIAAAAIAP3/AAACAAAAAAAIAP7/AAACAAEAAAAIAP//AAACAAEAAAAIAAAAAAAFAAIAAAAJAAAAAAACAAAAAAAJAAEAAAACAAEAAAAJAAIAAAAFAAIAAAAKAAIAAAABAAAAAAALAAIAAAABAAAAAAAMAAIAAAABAAAAAAANAAIAAAAGAAIAAAANAAEAAAAAAAAAAAAOAAEAAAABAAAAAAAPAAEAAAABAAAAAAAQAAEAAAABAAAAAAARAAEAAAABAAAAAAASAAEAAAACAAAAAAASAAIAAAACAAEAAAASAAMAAAACAAEAAAARAAMAAAABAAEAAAAQAAMAAAABAAEAAAAPAAMAAAABAAEAAAAOAAMAAAABAAEAAAANAAMAAAABAAEAAAAMAAMAAAABAAEAAAALAAMAAAABAAEAAAAKAAMAAAABAAEAAAAJAAMAAAABAAEAAAAIAAMAAAABAAEAAAAHAAMAAAABAAEAAAAGAAMAAAABAAEAAAAGAAIAAAABAAEAAAAFAAIAAAABAAEAAAAEAAIAAAABAAEAAAADAAIAAAABAAEAAAACAAIAAAABAAEAAAABAAIAAAABAAEAAAAAAAIAAAABAAEAAAD//wIAAAABAAEAAAD+/wIAAAABAAEAAAD9/wIAAAABAAEAAAD8/wIAAAABAAEAAAD8/wMAAAABAAEAAAD9/wMAAAABAAEAAAD+/wMAAAABAAEAAAD+/wQAAAABAAEAAAD//wQAAAABAAEAAAAAAAQAAAABAAEAAAABAAQAAAABAAEAAAACAAQAAAABAAEAAAADAAQAAAABAAEAAAAEAAQAAAABAAEAAAAFAAQAAAABAAEAAAAGAAQAAAABAAEAAAAHAAQAAAABAAEAAAAIAAQAAAABAAEAAAAJAAQAAAABAAEAAAAKAAQAAAABAAEAAAALAAQAAAABAAEAAAAMAAQAAAABAAEAAAANAAQAAAABAAEAAAAOAAQAAAABAAEAAAAPAAQAAAABAAEAAAARAAIAAAABAAEAAAAQAAIAAAABAAEAAAAPAAIAAAABAAEAAAAOAAIAAAABAAEAAAAQAAQAAAABAAEAAAARAAQAAAABAAEAAAASAAQAAAAFAAIAAAAIAAIAAAABAAEAAAAHAAIAAAABAAEAAAAFAAMAAAABAAEAAAAEAAMAAAABAAEAAAADAAMAAAABAAEAAAACAAMAAAABAAEAAAABAAMAAAABAAEAAAAAAAMAAAABAAEAAAD//wMAAAABAAEAAAD9/wQAAAABAAEAAAD8/wQAAAABAAEAAAAIAAEAAAABAAEAAAAHAAEAAAABAAEAAAAHAAAAAAABAAEAAAAHAP//AAABAAEAAAAHAP7/AAABAAEAAAAGAAEAAAABAAEAAAAGAAAAAAABAAEAAAAGAP//AAABAAEAAAAGAP7/AAABAAEAAAAEAP7/AAABAAEAAAAEAPz/AAABAAEAAAAVAPz/AAABAAIAAAAUAPz/AAABAAIAAAATAP3/AAACAAIAAAASAP3/AAABAAIAAAARAP3/AAABAAIAAAAQAP3/AAABAAIAAAAPAP7/AAACAAIAAAAOAP7/AAAAAAIAAAAdAAQAAAABAAEAAAAcAAMAAAAAAAEAAAAbAAIAAAAAAAIAAAAaAAEAAAAAAAIAAAAZAAAAAAAAAAIAAAAZAP//AAAAAAEAAAAYAP7/AAAAAAIAAAAXAP3/AAAAAAIAAAAWAPz/AAABAAIAAAAcAAQAAAAGAAIAAAAbAAQAAAABAAAAAAAaAAQAAAABAAAAAAAZAAQAAAABAAAAAAAYAAQAAAABAAAAAAAXAAQAAAABAAAAAAAWAAQAAAABAAAAAAAVAAQAAAABAAAAAAAUAAQAAAABAAAAAAATAAQAAAABAAAAAAAdAAMAAAABAAEAAAAdAAIAAAABAAEAAAAcAAIAAAAGAAEAAAAcAAEAAAABAAEAAAAbAAEAAAAGAAEAAAAdAAEAAAABAAEAAAAdAAAAAAABAAEAAAAcAAAAAAABAAEAAAAbAAAAAAABAAEAAAAaAAAAAAAGAAEAAAAaAP//AAABAAEAAAAaAP7/AAABAAEAAAAZAP7/AAAGAAEAAAAZAP3/AAABAAEAAAAYAP3/AAAGAAEAAAAYAPz/AAABAAEAAAAXAPz/AAAGAAEAAAAZAPz/AAABAAEAAAAaAPz/AAABAAEAAAAaAP3/AAABAAEAAAAbAP3/AAABAAEAAAAbAP7/AAABAAEAAAAbAP//AAABAAEAAAAcAP//AAABAAEAAAAdAP//AAABAAEAAAAdAP7/AAABAAEAAAAcAP3/AAABAAEAAAAcAPz/AAABAAEAAAAbAPz/AAABAAEAAAAcAP7/AAABAAEAAAAdAP3/AAABAAEAAAAdAPz/AAABAAEAAAAdAPv/AAABAAEAAAAcAPv/AAABAAEAAAAbAPv/AAABAAEAAAAaAPv/AAABAAEAAAAZAPv/AAABAAEAAAAYAPv/AAABAAEAAAAXAPv/AAABAAEAAAAWAPv/AAABAAEAAAAWAPr/AAABAAAAAAAVAPr/AAABAAAAAAAUAPr/AAABAAAAAAAUAPv/AAABAAEAAAAVAPv/AAABAAEAAAAXAPr/AAABAAAAAAAYAPr/AAABAAAAAAAZAPr/AAABAAAAAAAaAPr/AAABAAAAAAAbAPr/AAABAAAAAAAcAPr/AAABAAAAAAAdAPr/AAABAAAAAAATAPz/AAAFAAEAAAASAPz/AAABAAEAAAARAPz/AAABAAEAAAARAPv/AAABAAEAAAASAPv/AAABAAEAAAASAPr/AAABAAAAAAATAPr/AAABAAAAAAATAPv/AAABAAEAAAARAPr/AAABAAAAAAAQAPr/AAABAAAAAAAQAPv/AAABAAEAAAAQAPz/AAABAAEAAAAPAPz/AAABAAEAAAAPAP3/AAAFAAEAAAAOAP3/AAAAAAEAAAAOAPz/AAAAAAEAAAAOAPv/AAAAAAEAAAAPAPv/AAABAAEAAAAPAPr/AAABAAAAAAAOAPr/AAAAAAAAAAAdAAUAAAABAAIAAAAcAAUAAAABAAIAAAAbAAUAAAABAAIAAAAaAAUAAAABAAIAAAAZAAUAAAABAAIAAAAYAAUAAAABAAIAAAASAAUAAAABAAIAAAATAAUAAAABAAIAAAAUAAUAAAABAAIAAAAVAAUAAAABAAIAAAAWAAUAAAABAAIAAAAXAAUAAAABAAIAAAARAAUAAAABAAIAAAAQAAUAAAABAAIAAAAPAAUAAAABAAIAAAAOAAUAAAABAAIAAAANAAUAAAABAAIAAAAMAAUAAAABAAIAAAALAAUAAAABAAIAAAAKAAUAAAABAAIAAAAJAAUAAAABAAIAAAAIAAUAAAABAAIAAAAHAAUAAAABAAIAAAAGAAUAAAABAAIAAAAFAAUAAAABAAIAAAAEAAUAAAABAAIAAAADAAUAAAABAAIAAAACAAUAAAABAAIAAAABAAUAAAABAAIAAAAAAAUAAAABAAIAAAD//wUAAAABAAIAAAD+/wUAAAABAAIAAAD9/wUAAAABAAIAAAD8/wUAAAABAAIAAAAnAAUAAAACAAIAAAAnAAQAAAACAAEAAAAnAAMAAAACAAEAAAAnAAIAAAACAAEAAAAnAAEAAAACAAEAAAAnAAAAAAACAAEAAAAnAP//AAACAAEAAAAnAP7/AAACAAEAAAAnAP3/AAACAAEAAAAnAPz/AAACAAEAAAAnAPv/AAACAAEAAAAnAPr/AAACAAEAAAAmAAUAAAABAAIAAAAmAAQAAAABAAEAAAAmAAMAAAABAAEAAAAmAAIAAAABAAEAAAAmAAEAAAABAAEAAAAmAAAAAAABAAEAAAAmAP//AAABAAEAAAAmAP7/AAABAAEAAAAmAP3/AAABAAEAAAAmAPz/AAABAAEAAAAmAPv/AAABAAEAAAAmAPr/AAABAAEAAAAlAAUAAAABAAIAAAAlAAQAAAABAAEAAAAlAAMAAAABAAEAAAAlAAIAAAABAAEAAAAlAAEAAAABAAEAAAAlAAAAAAABAAEAAAAlAP//AAABAAEAAAAlAP7/AAABAAEAAAAlAP3/AAABAAEAAAAlAPz/AAABAAEAAAAlAPv/AAABAAEAAAAlAPr/AAABAAEAAAAkAAUAAAABAAIAAAAkAAQAAAABAAEAAAAkAAMAAAABAAEAAAAkAAIAAAABAAEAAAAkAAEAAAABAAEAAAAkAAAAAAABAAEAAAAkAP//AAABAAEAAAAkAP7/AAABAAEAAAAkAP3/AAABAAEAAAAkAPz/AAABAAEAAAAkAPv/AAABAAEAAAAkAPr/AAABAAEAAAAjAAUAAAABAAIAAAAjAAQAAAABAAEAAAAjAAMAAAABAAEAAAAjAAIAAAABAAEAAAAjAAEAAAABAAEAAAAjAAAAAAABAAEAAAAjAP//AAABAAEAAAAjAP7/AAABAAEAAAAjAP3/AAABAAEAAAAjAPz/AAABAAEAAAAjAPv/AAABAAEAAAAjAPr/AAABAAEAAAAiAAUAAAABAAIAAAAiAAQAAAABAAEAAAAiAAMAAAABAAEAAAAiAAIAAAABAAEAAAAiAAEAAAABAAEAAAAiAAAAAAABAAEAAAAiAP//AAABAAEAAAAiAP7/AAABAAEAAAAiAP3/AAABAAEAAAAiAPz/AAABAAEAAAAiAPv/AAABAAEAAAAiAPr/AAABAAEAAAAhAAUAAAABAAIAAAAhAAQAAAABAAEAAAAhAAMAAAABAAEAAAAhAAIAAAABAAEAAAAhAAEAAAABAAEAAAAhAAAAAAABAAEAAAAhAP//AAABAAEAAAAhAP7/AAABAAEAAAAhAP3/AAABAAEAAAAhAPz/AAABAAEAAAAhAPv/AAABAAEAAAAhAPr/AAABAAEAAAAgAAUAAAABAAIAAAAgAAQAAAABAAEAAAAgAAMAAAABAAEAAAAgAAIAAAABAAEAAAAgAAEAAAABAAEAAAAgAAAAAAABAAEAAAAgAP//AAABAAEAAAAgAP7/AAABAAEAAAAgAP3/AAABAAEAAAAgAPz/AAABAAEAAAAgAPv/AAABAAEAAAAgAPr/AAAGAAIAAAAfAAUAAAABAAIAAAAfAAQAAAABAAEAAAAfAAMAAAABAAEAAAAfAAIAAAABAAEAAAAfAAEAAAABAAEAAAAfAAAAAAABAAEAAAAfAP//AAABAAEAAAAfAP7/AAABAAEAAAAfAP3/AAABAAEAAAAfAPz/AAABAAEAAAAfAPv/AAABAAEAAAAfAPr/AAABAAAAAAAeAAUAAAABAAIAAAAeAAQAAAABAAEAAAAeAAMAAAABAAEAAAAeAAIAAAABAAEAAAAeAAEAAAABAAEAAAAeAAAAAAABAAEAAAAeAP//AAABAAEAAAAeAP7/AAABAAEAAAAeAP3/AAABAAEAAAAeAPz/AAABAAEAAAAeAPv/AAABAAEAAAAeAPr/AAABAAAAAAAnAPn/AAACAAEAAAAnAPj/AAACAAEAAAAnAPf/AAACAAEAAAAnAPb/AAACAAEAAAAnAPX/AAACAAEAAAAnAPT/AAAFAAEAAAAnAPP/AAABAAEAAAAnAPL/AAABAAEAAAAnAPH/AAABAAEAAAAnAPD/AAABAAEAAAAmAPn/AAABAAEAAAAmAPj/AAABAAEAAAAmAPf/AAABAAEAAAAmAPb/AAABAAEAAAAmAPX/AAABAAEAAAAmAPT/AAABAAEAAAAmAPP/AAABAAEAAAAmAPL/AAABAAEAAAAmAPH/AAABAAEAAAAmAPD/AAABAAEAAAAlAPn/AAABAAEAAAAlAPj/AAABAAEAAAAlAPf/AAABAAEAAAAlAPb/AAABAAEAAAAlAPX/AAABAAEAAAAlAPT/AAABAAEAAAAlAPP/AAABAAEAAAAlAPL/AAABAAEAAAAlAPH/AAABAAEAAAAlAPD/AAABAAEAAAAkAPn/AAABAAEAAAAkAPj/AAABAAEAAAAkAPf/AAABAAEAAAAkAPb/AAABAAEAAAAkAPX/AAABAAEAAAAkAPT/AAABAAEAAAAkAPP/AAABAAEAAAAkAPL/AAABAAEAAAAkAPH/AAABAAEAAAAkAPD/AAABAAEAAAAjAPn/AAABAAEAAAAjAPj/AAABAAEAAAAjAPf/AAABAAEAAAAjAPb/AAABAAEAAAAjAPX/AAABAAEAAAAjAPT/AAABAAEAAAAjAPP/AAABAAEAAAAjAPL/AAABAAEAAAAjAPH/AAABAAEAAAAjAPD/AAABAAEAAAAiAPn/AAABAAEAAAAiAPj/AAABAAEAAAAiAPf/AAABAAEAAAAiAPb/AAABAAEAAAAiAPX/AAABAAEAAAAiAPT/AAABAAEAAAAiAPP/AAABAAEAAAAiAPL/AAABAAEAAAAiAPH/AAABAAEAAAAiAPD/AAABAAEAAAAhAPn/AAABAAEAAAAhAPj/AAABAAEAAAAhAPf/AAABAAEAAAAhAPb/AAABAAEAAAAhAPX/AAABAAEAAAAhAPT/AAABAAEAAAAhAPP/AAABAAEAAAAhAPL/AAABAAEAAAAhAPH/AAABAAEAAAAhAPD/AAABAAEAAAAgAPn/AAAAAAEAAAAgAPj/AAAAAAEAAAAgAPf/AAAAAAEAAAAgAPb/AAAAAAEAAAAgAPX/AAAAAAEAAAAgAPT/AAAAAAEAAAAgAPP/AAAAAAEAAAAgAPL/AAAAAAEAAAAgAPH/AAAAAAEAAAAgAPD/AAAAAAEAAAApAO//AAACAAEAAAApAO7/AAACAAEAAAApAO3/AAACAAEAAAApAOz/AAACAAEAAAApAOv/AAACAAEAAAApAOr/AAACAAAAAAAoAO//AAABAAEAAAAoAO7/AAABAAEAAAAoAO3/AAABAAEAAAAoAOz/AAABAAEAAAAoAOv/AAABAAEAAAAoAOr/AAABAAAAAAAnAO//AAABAAEAAAAnAO7/AAABAAEAAAAnAO3/AAABAAEAAAAnAOz/AAABAAEAAAAnAOv/AAABAAEAAAAnAOr/AAABAAAAAAAmAO//AAABAAEAAAAmAO7/AAABAAEAAAAmAO3/AAABAAEAAAAmAOz/AAABAAEAAAAmAOv/AAABAAEAAAAmAOr/AAABAAAAAAAlAO//AAABAAEAAAAlAO7/AAABAAEAAAAlAO3/AAABAAEAAAAlAOz/AAABAAEAAAAlAOv/AAABAAEAAAAlAOr/AAABAAAAAAAkAO//AAABAAEAAAAkAO7/AAABAAEAAAAkAO3/AAABAAEAAAAkAOz/AAABAAEAAAAkAOv/AAABAAEAAAAkAOr/AAABAAAAAAAjAO//AAABAAEAAAAjAO7/AAABAAEAAAAjAO3/AAABAAEAAAAjAOz/AAABAAEAAAAjAOv/AAABAAEAAAAjAOr/AAABAAAAAAAiAO//AAABAAEAAAAiAO7/AAABAAEAAAAiAO3/AAABAAEAAAAiAOz/AAABAAEAAAAiAOv/AAABAAEAAAAiAOr/AAABAAAAAAAhAO//AAABAAEAAAAhAO7/AAABAAEAAAAhAO3/AAABAAEAAAAhAOz/AAABAAEAAAAhAOv/AAABAAEAAAAhAOr/AAABAAAAAAAgAO//AAAGAAEAAAAgAO7/AAABAAEAAAAgAO3/AAABAAEAAAAgAOz/AAABAAEAAAAgAOv/AAABAAEAAAAgAOr/AAABAAAAAAApAPT/AAACAAIAAAApAPP/AAACAAEAAAApAPL/AAACAAEAAAApAPH/AAACAAEAAAApAPD/AAACAAEAAAAoAPT/AAABAAIAAAAoAPP/AAABAAEAAAAoAPL/AAABAAEAAAAoAPH/AAABAAEAAAAoAPD/AAABAAEAAAAfAO//AAABAAIAAAAfAO7/AAABAAEAAAAfAO3/AAABAAEAAAAfAOz/AAABAAEAAAAfAOv/AAABAAEAAAAfAOr/AAABAAAAAAAeAO//AAABAAIAAAAeAO7/AAABAAEAAAAeAO3/AAABAAEAAAAeAOz/AAABAAEAAAAeAOv/AAABAAEAAAAeAOr/AAABAAAAAAAdAO//AAABAAIAAAAdAO7/AAABAAEAAAAdAO3/AAABAAEAAAAdAOz/AAABAAEAAAAdAOv/AAABAAEAAAAdAOr/AAABAAAAAAAcAO//AAABAAIAAAAcAO7/AAABAAEAAAAcAO3/AAABAAEAAAAcAOz/AAABAAEAAAAcAOv/AAABAAEAAAAcAOr/AAABAAAAAAAbAO//AAABAAIAAAAbAO7/AAABAAEAAAAbAO3/AAABAAEAAAAbAOz/AAABAAEAAAAbAOv/AAABAAEAAAAbAOr/AAABAAAAAAAaAO//AAABAAIAAAAaAO7/AAABAAEAAAAaAO3/AAABAAEAAAAaAOz/AAABAAEAAAAaAOv/AAABAAEAAAAaAOr/AAABAAAAAAAZAO//AAABAAIAAAAZAO7/AAABAAEAAAAZAO3/AAABAAEAAAAZAOz/AAABAAEAAAAZAOv/AAABAAEAAAAZAOr/AAABAAAAAAAYAO//AAABAAIAAAAYAO7/AAABAAEAAAAYAO3/AAABAAEAAAAYAOz/AAABAAEAAAAYAOv/AAABAAEAAAAYAOr/AAABAAAAAAAXAO//AAABAAIAAAAXAO7/AAABAAEAAAAXAO3/AAABAAEAAAAXAOz/AAABAAEAAAAXAOv/AAABAAEAAAAXAOr/AAABAAAAAAAWAO//AAABAAIAAAAWAO7/AAABAAEAAAAWAO3/AAABAAEAAAAWAOz/AAABAAEAAAAWAOv/AAABAAEAAAAWAOr/AAABAAAAAAAVAO//AAABAAIAAAAVAO7/AAABAAEAAAAVAO3/AAABAAEAAAAVAOz/AAABAAEAAAAVAOv/AAABAAEAAAAVAOr/AAABAAAAAAAUAO//AAABAAIAAAAUAO7/AAABAAEAAAAUAO3/AAABAAEAAAAUAOz/AAABAAEAAAAUAOv/AAABAAEAAAAUAOr/AAABAAAAAAATAO//AAABAAIAAAATAO7/AAABAAEAAAATAO3/AAABAAEAAAATAOz/AAABAAEAAAATAOv/AAABAAEAAAATAOr/AAABAAAAAAASAO//AAABAAIAAAASAO7/AAABAAEAAAASAO3/AAABAAEAAAASAOz/AAABAAEAAAASAOv/AAABAAEAAAASAOr/AAABAAAAAAARAO//AAABAAIAAAARAO7/AAABAAEAAAARAO3/AAABAAEAAAARAOz/AAABAAEAAAARAOv/AAABAAEAAAARAOr/AAABAAAAAAAQAO//AAABAAIAAAAQAO7/AAABAAEAAAAQAO3/AAABAAEAAAAQAOz/AAABAAEAAAAQAOv/AAABAAEAAAAQAOr/AAABAAAAAAAPAO//AAABAAIAAAAPAO7/AAABAAEAAAAPAO3/AAABAAEAAAAPAOz/AAABAAEAAAAPAOv/AAABAAEAAAAPAOr/AAABAAAAAAAOAO//AAABAAIAAAAOAO7/AAABAAEAAAAOAO3/AAABAAEAAAAOAOz/AAABAAEAAAAOAOv/AAABAAEAAAAOAOr/AAABAAAAAAANAO//AAABAAIAAAANAO7/AAABAAEAAAANAO3/AAABAAEAAAANAOz/AAABAAEAAAANAOv/AAABAAEAAAANAOr/AAABAAAAAAAMAO//AAABAAIAAAAMAO7/AAABAAEAAAAMAO3/AAABAAEAAAAMAOz/AAABAAEAAAAMAOv/AAABAAEAAAAMAOr/AAABAAAAAAALAO//AAABAAIAAAALAO7/AAABAAEAAAALAO3/AAABAAEAAAALAOz/AAABAAEAAAALAOv/AAABAAEAAAALAOr/AAABAAAAAAAKAO//AAABAAIAAAAKAO7/AAABAAEAAAAKAO3/AAABAAEAAAAKAOz/AAABAAEAAAAKAOv/AAABAAEAAAAKAOr/AAABAAAAAAAJAO//AAABAAIAAAAJAO7/AAABAAEAAAAJAO3/AAABAAEAAAAJAOz/AAABAAEAAAAJAOv/AAABAAEAAAAJAOr/AAABAAAAAAAIAO//AAABAAIAAAAIAO7/AAABAAEAAAAIAO3/AAABAAEAAAAIAOz/AAABAAEAAAAIAOv/AAABAAEAAAAIAOr/AAABAAAAAAAHAO//AAABAAIAAAAHAO7/AAABAAEAAAAHAO3/AAABAAEAAAAHAOz/AAABAAEAAAAHAOv/AAABAAEAAAAHAOr/AAABAAAAAAAGAO//AAABAAIAAAAGAO7/AAABAAEAAAAGAO3/AAABAAEAAAAGAOz/AAABAAEAAAAGAOv/AAABAAEAAAAGAOr/AAABAAAAAAAFAO//AAABAAIAAAAFAO7/AAABAAEAAAAFAO3/AAABAAEAAAAFAOz/AAABAAEAAAAFAOv/AAABAAEAAAAFAOr/AAABAAAAAAAEAO//AAABAAIAAAAEAO7/AAABAAEAAAAEAO3/AAABAAEAAAAEAOz/AAABAAEAAAAEAOv/AAABAAEAAAAEAOr/AAABAAAAAAADAO//AAABAAIAAAADAO7/AAABAAEAAAADAO3/AAABAAEAAAADAOz/AAABAAEAAAADAOv/AAABAAEAAAADAOr/AAABAAAAAAACAO//AAABAAIAAAACAO7/AAABAAEAAAACAO3/AAABAAEAAAACAOz/AAABAAEAAAACAOv/AAABAAEAAAACAOr/AAABAAAAAAABAO//AAABAAIAAAABAO7/AAABAAEAAAABAO3/AAABAAEAAAABAOz/AAABAAEAAAABAOv/AAABAAEAAAABAOr/AAABAAAAAAAAAO//AAABAAIAAAAAAO7/AAABAAEAAAAAAO3/AAABAAEAAAAAAOz/AAABAAEAAAAAAOv/AAABAAEAAAAAAOr/AAABAAAAAAD//+//AAABAAIAAAD//+7/AAABAAEAAAD//+3/AAABAAEAAAD//+z/AAABAAEAAAD//+v/AAABAAEAAAD//+r/AAABAAAAAAD+/+//AAABAAIAAAD+/+7/AAABAAEAAAD+/+3/AAABAAEAAAD+/+z/AAABAAEAAAD+/+v/AAABAAEAAAD+/+r/AAABAAAAAAD9/+//AAABAAIAAAD9/+7/AAABAAEAAAD9/+3/AAABAAEAAAD9/+z/AAABAAEAAAD9/+v/AAABAAEAAAD9/+r/AAAFAAIAAAD9/+n/AAACAAAAAAD8/+//AAABAAIAAAD8/+7/AAABAAEAAAD8/+3/AAABAAEAAAD8/+z/AAABAAEAAAD8/+v/AAABAAEAAAD8/+r/AAABAAEAAAD8/+n/AAABAAAAAAD7/+//AAAFAAEAAAD7/+7/AAABAAEAAAD7/+3/AAABAAEAAAD7/+z/AAABAAEAAAD7/+v/AAABAAEAAAD7/+r/AAABAAEAAAD7/+n/AAABAAAAAAD6/+//AAABAAEAAAD6/+7/AAABAAEAAAD6/+3/AAABAAEAAAD6/+z/AAABAAEAAAD6/+v/AAABAAEAAAD6/+r/AAABAAEAAAD6/+n/AAABAAAAAAD5/+//AAABAAEAAAD5/+7/AAABAAEAAAD5/+3/AAABAAEAAAD5/+z/AAABAAEAAAD5/+v/AAABAAEAAAD5/+r/AAABAAEAAAD5/+n/AAABAAAAAAD4/+//AAABAAEAAAD4/+7/AAABAAEAAAD4/+3/AAABAAEAAAD4/+z/AAABAAEAAAD4/+v/AAABAAEAAAD4/+r/AAABAAEAAAD4/+n/AAABAAAAAAD3/+//AAABAAEAAAD3/+7/AAABAAEAAAD3/+3/AAABAAEAAAD3/+z/AAABAAEAAAD3/+v/AAABAAEAAAD3/+r/AAABAAEAAAD3/+n/AAABAAAAAAD2/+//AAABAAEAAAD2/+7/AAABAAEAAAD2/+3/AAABAAEAAAD2/+z/AAABAAEAAAD2/+v/AAABAAEAAAD2/+r/AAABAAEAAAD2/+n/AAABAAAAAAD1/+//AAAAAAEAAAD1/+7/AAAAAAEAAAD1/+3/AAAAAAEAAAD1/+z/AAAAAAEAAAD1/+v/AAAAAAEAAAD1/+r/AAAAAAEAAAD1/+n/AAAAAAAAAAD7/wUAAAABAAIAAAD7/wQAAAABAAEAAAD7/wMAAAABAAEAAAD7/wIAAAABAAEAAAD7/wEAAAABAAEAAAD7/wAAAAABAAEAAAD7////AAAFAAIAAAD7//7/AAACAAAAAAD7//j/AAACAAIAAAD7//f/AAACAAEAAAD7//b/AAACAAEAAAD7//X/AAACAAEAAAD7//T/AAACAAEAAAD7//P/AAACAAEAAAD7//L/AAACAAEAAAD7//H/AAACAAEAAAD7//D/AAACAAEAAAD6/wUAAAABAAIAAAD6/wQAAAABAAEAAAD6/wMAAAABAAEAAAD6/wIAAAABAAEAAAD6/wEAAAABAAEAAAD6/wAAAAABAAEAAAD6////AAABAAEAAAD6//7/AAABAAAAAAD6//j/AAABAAIAAAD6//f/AAABAAEAAAD6//b/AAABAAEAAAD6//X/AAABAAEAAAD6//T/AAABAAEAAAD6//P/AAABAAEAAAD6//L/AAABAAEAAAD6//H/AAABAAEAAAD6//D/AAABAAEAAAD5/wUAAAABAAIAAAD5/wQAAAABAAEAAAD5/wMAAAABAAEAAAD5/wIAAAABAAEAAAD5/wEAAAABAAEAAAD5/wAAAAABAAEAAAD5////AAABAAEAAAD5//7/AAABAAAAAAD5//j/AAABAAIAAAD5//f/AAABAAEAAAD5//b/AAABAAEAAAD5//X/AAABAAEAAAD5//T/AAABAAEAAAD5//P/AAABAAEAAAD5//L/AAABAAEAAAD5//H/AAABAAEAAAD5//D/AAABAAEAAAD4/wUAAAABAAIAAAD4/wQAAAABAAEAAAD4/wMAAAABAAEAAAD4/wIAAAABAAEAAAD4/wEAAAABAAEAAAD4/wAAAAABAAEAAAD4////AAABAAEAAAD4//7/AAAFAAIAAAD4//j/AAABAAIAAAD4//f/AAABAAEAAAD4//b/AAABAAEAAAD4//X/AAABAAEAAAD4//T/AAABAAEAAAD4//P/AAABAAEAAAD4//L/AAABAAEAAAD4//H/AAABAAEAAAD4//D/AAABAAEAAAD3/wUAAAABAAIAAAD3/wQAAAABAAEAAAD3/wMAAAABAAEAAAD3/wIAAAABAAEAAAD3/wEAAAABAAEAAAD3/wAAAAABAAEAAAD3////AAABAAEAAAD3//7/AAABAAEAAAD3//j/AAABAAIAAAD3//f/AAABAAEAAAD3//b/AAABAAEAAAD3//X/AAABAAEAAAD3//T/AAABAAEAAAD3//P/AAABAAEAAAD3//L/AAABAAEAAAD3//H/AAABAAEAAAD3//D/AAABAAEAAAD2/wUAAAABAAIAAAD2/wQAAAABAAEAAAD2/wMAAAABAAEAAAD2/wIAAAABAAEAAAD2/wEAAAABAAEAAAD2/wAAAAABAAEAAAD2////AAABAAEAAAD2//7/AAABAAEAAAD2//j/AAAFAAEAAAD2//f/AAABAAEAAAD2//b/AAABAAEAAAD2//X/AAABAAEAAAD2//T/AAABAAEAAAD2//P/AAABAAEAAAD2//L/AAABAAEAAAD2//H/AAABAAEAAAD2//D/AAABAAEAAAD1/wUAAAAAAAIAAAD1/wQAAAAAAAEAAAD1/wMAAAAAAAEAAAD1/wIAAAAAAAEAAAD1/wEAAAAAAAEAAAD1/wAAAAAAAAEAAAD1////AAAAAAEAAAD1//7/AAAAAAEAAAD1//j/AAAAAAEAAAD1//f/AAAAAAEAAAD1//b/AAAAAAEAAAD1//X/AAAAAAEAAAD1//T/AAAAAAEAAAD1//P/AAAAAAEAAAD1//L/AAAAAAEAAAD1//H/AAAAAAEAAAD1//D/AAAAAAEAAAD4//3/AAACAAAAAAD3//3/AAABAAAAAAD2//3/AAAFAAIAAAD1//3/AAAAAAEAAAD1//z/AAAAAAEAAAD1//v/AAAAAAEAAAD1//r/AAAAAAEAAAD1//n/AAAAAAEAAAD2//n/AAACAAEAAAD2//r/AAACAAEAAAD2//v/AAACAAEAAAD2//z/AAACAAEAAAA=") tile_set = ExtResource("1_d680t") [node name="Entities layer" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("AAAJAPz/AAAHAAMAAAAJAP3/AAAHAAQAAAAKAPz/AAAIAAMAAAALAPz/AAAIAAMAAAAMAPz/AAAJAAMAAAANAPz/AAAKAAMAAAANAP3/AAAKAAQAAAAUAPz/AAAGAAMAADAVAPz/AAAGAAMAADAWAPz/AAAGAAMAADAcAAMAAAAGAAMAAGAPAPn/AAADAAYAAAAWAP3/AAALAAQAAAAWAP7/AAALAAQAAAAWAP//AAALAAQAAAAWAAAAAAALAAQAAAAWAAEAAAALAAQAAAAWAAIAAAALAAQAAAAWAAMAAAALAAQAAAAaAAMAAAAGAAQAAAAWAPn/AQAAAAAAAQAXAPn/AQAAAAAAAQAYAPn/AQAAAAAAAQAZAPn/AQAAAAAAAQAaAPn/AQAAAAAAAQAZAPj/AQAAAAAAAQAYAPj/AQAAAAAAAQAXAPj/AQAAAAAAAQAYAPf/AQAAAAAAAQAKAP3/AQAAAAAAAgALAP3/AQAAAAAAAgAMAP3/AQAAAAAAAgA=") +tile_map_data = PackedByteArray("AAAJAPz/AAAHAAMAAAAJAP3/AAAHAAQAAAAKAPz/AAAIAAMAAAALAPz/AAAIAAMAAAAMAPz/AAAJAAMAAAANAPz/AAAKAAMAAAANAP3/AAAKAAQAAAAUAPz/AAAGAAMAADAVAPz/AAAGAAMAADAWAPz/AAAGAAMAADAcAAMAAAAGAAMAAGAPAPn/AAADAAYAAAAaAAMAAAAGAAQAAAAWAPn/AQAAAAAAAQAXAPn/AQAAAAAAAQAYAPn/AQAAAAAAAQAZAPn/AQAAAAAAAQAaAPn/AQAAAAAAAQAZAPj/AQAAAAAAAQAYAPj/AQAAAAAAAQAXAPj/AQAAAAAAAQAYAPf/AQAAAAAAAQAKAP3/AQAAAAAAAgALAP3/AQAAAAAAAgAMAP3/AQAAAAAAAgA=") tile_set = SubResource("TileSet_yf4x4") [node name="Foreground layer" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("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") +tile_map_data = PackedByteArray("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") tile_set = SubResource("TileSet_r3m5w") [node name="Small Foreground layer" type="TileMapLayer" parent="."] @@ -417,5 +417,8 @@ metadata/_edit_group_ = true [node name="Camera2D" type="Camera2D" parent="."] position = Vector2(237, -100) -[node name="Damage" parent="." instance=ExtResource("7_a6wgf")] -position = Vector2(64, -89) +[node name="Enemy" parent="." instance=ExtResource("7_qgddg")] +position = Vector2(484, -112) + +[node name="Enemy2" parent="." instance=ExtResource("7_qgddg")] +position = Vector2(-14, -34) diff --git a/scripts/components/bullet.gd b/scripts/components/bullet.gd new file mode 100644 index 0000000..73ed2d8 --- /dev/null +++ b/scripts/components/bullet.gd @@ -0,0 +1,32 @@ +class_name BulletComponent +extends Node + + +@export var root: Node2D +@export var direction: Vector2 = Vector2.RIGHT +@export var speed: float = 10.0 +@export var area2d: Area2D +@export var visibility_notifier: VisibleOnScreenNotifier2D +@export var life_time: float = 5.0 +@export var timer: Timer + +func _ready() -> void: + root = get_parent() + visibility_notifier.screen_exited.connect(_on_screen_exited) + area2d.body_entered.connect(on_area2d_body_entered) + + timer.wait_time = life_time + timer.timeout.connect(on_timer_timeout) + +func _physics_process(delta: float) -> void: + root.position += direction * speed * delta + +func _on_screen_exited() -> void: + root.queue_free() + +func on_area2d_body_entered(_body: Node2D) -> void: + root.queue_free() + + +func on_timer_timeout() -> void: + root.queue_free() \ No newline at end of file diff --git a/scripts/components/collectable.gd b/scripts/components/collectable.gd index 3cff882..3c6cd29 100644 --- a/scripts/components/collectable.gd +++ b/scripts/components/collectable.gd @@ -2,6 +2,7 @@ class_name CollectableComponent extends Node var root: Node +var has_fade_away: bool = false @export var area2d: Area2D @export var collectable_data: Resource @@ -16,7 +17,11 @@ func _ready() -> void: root = get_parent() + if root.has_node("FadeAwayComponent"): + has_fade_away = true + func _on_area2d_body_entered(body: Node2D) -> void: if body.has_node("CanPickUpComponent"): collected.emit(collectable_data.amount) - root.queue_free() + if not has_fade_away: + root.queue_free() diff --git a/scripts/components/fade_away.gd b/scripts/components/fade_away.gd new file mode 100644 index 0000000..a00bd49 --- /dev/null +++ b/scripts/components/fade_away.gd @@ -0,0 +1,27 @@ +class_name FadeAwayComponent +extends Node + +@export var sprite2d: Sprite2D +@export var fade_duration: float = 1.0 +@export var speed: float = 10.0 +@export var direction: Vector2 = Vector2.UP +@export var root: Node2D +@export var area2d: Area2D + + +func _ready(): + root = get_parent() + if area2d: + area2d.body_entered.connect(on_area2d_body_entered) + + +func fade_away() -> void: + var fade_tween := create_tween().set_parallel(true) + fade_tween.tween_property(sprite2d, "modulate:a", 0, fade_duration) + fade_tween.tween_property(sprite2d, "position", sprite2d.position + (direction * speed), fade_duration) + await (fade_tween.finished) + root.queue_free() + + +func on_area2d_body_entered(_body: Node2D) -> void: + fade_away() diff --git a/scripts/components/periodic_shooting.gd b/scripts/components/periodic_shooting.gd new file mode 100644 index 0000000..4519c62 --- /dev/null +++ b/scripts/components/periodic_shooting.gd @@ -0,0 +1,44 @@ +class_name PeriodicShootingComponent +extends Node + +@export var bullet_scene: PackedScene = preload("res://objects/bullet.tscn") +@export var shoot_interval: float = 1.0 +@export var shoot_direction: Vector2 = Vector2.RIGHT +@export var side_to_side_movement: SideToSideMovement +@export var root: Node2D + +var timer: Timer + + +func _ready() -> void: + root = get_parent() + setup_timer() + + +func _process(_delta: float) -> void: + if side_to_side_movement: + shoot_direction = side_to_side_movement.direction if side_to_side_movement.direction != Vector2.ZERO else Vector2.RIGHT + +func shoot() -> void: + if shoot_direction == Vector2.ZERO: + return + + var bullet_instance: Node2D = bullet_scene.instantiate() + var bullet_component: BulletComponent = bullet_instance.get_node("BulletComponent") + bullet_instance.position = root.position + bullet_component.direction = shoot_direction + get_tree().current_scene.add_child(bullet_instance) + + +func on_timer_timeout() -> void: + shoot() + timer.start() + + +func setup_timer() -> void: + timer = Timer.new() + timer.wait_time = shoot_interval + timer.one_shot = false + timer.autostart = true + timer.timeout.connect(on_timer_timeout) + add_child(timer) \ No newline at end of file diff --git a/scripts/components/score.gd b/scripts/components/score.gd index 5ca249d..93155a8 100644 --- a/scripts/components/score.gd +++ b/scripts/components/score.gd @@ -15,6 +15,5 @@ func on_collected(amount: int) -> void: return game_manager.add_coins(amount) - print("Coins: ", game_manager.get_coins()) # todo: play sound # todo: update ui diff --git a/scripts/components/side_to_side_movement.gd b/scripts/components/side_to_side_movement.gd new file mode 100644 index 0000000..b463368 --- /dev/null +++ b/scripts/components/side_to_side_movement.gd @@ -0,0 +1,82 @@ +class_name SideToSideMovement +extends Node + +@export var root: Node2D +@export var sprite2d: Sprite2D +@export var speed: float = 10.0 +@export var wait_time: float = 1.0 +@export var left_ray: RayCast2D +@export var right_ray: RayCast2D + +var direction: Vector2 = Vector2.LEFT +var new_direction: Vector2 = Vector2.LEFT +var timer: Timer +var triggered_direction_change: bool = false + +signal direction_changed() + +func _ready() -> void: + root = get_parent() + + if not sprite2d: + print("SideToSideMovement node missing Sprite2D child.") + return + + if not left_ray or not right_ray: + print("SideToSideMovement node missing RayCast2D children.") + return + + setup_timer() + direction_changed.connect(on_direction_changed) + + +func _physics_process(delta: float) -> void: + handle_direction() + handle_sprite_flip() + handle_movement(delta) + +func handle_direction() -> void: + # we are not colliding with anything, which means we don't have ground to walk on. Stop moving. + if not left_ray.is_colliding() and not right_ray.is_colliding(): + new_direction = Vector2.ZERO + return + + # If the left ray is not colliding and the right ray is colliding, that means we have ground to the right and we should change direction to the right. + if not left_ray.is_colliding() and right_ray.is_colliding(): + new_direction = Vector2.RIGHT + direction_changed.emit() + return + if not right_ray.is_colliding() and left_ray.is_colliding(): + new_direction = Vector2.LEFT + direction_changed.emit() + return + +func handle_sprite_flip() -> void: + if direction == Vector2.LEFT: + sprite2d.flip_h = true + else: + sprite2d.flip_h = false + +func handle_movement(delta: float) -> void: + root.position += direction * speed * delta + +func on_direction_changed() -> void: + if direction == new_direction or triggered_direction_change: + return + triggered_direction_change = true + direction = Vector2.ZERO + timer.start() + +func on_timer_timeout() -> void: + timer.stop() + direction = new_direction + triggered_direction_change = false + + +func setup_timer() -> void: + timer = Timer.new() + add_child(timer) + timer.wait_time = wait_time + timer.one_shot = true + timer.timeout.connect(on_timer_timeout) + \ No newline at end of file diff --git a/sprites/robot_cutout.png b/sprites/robot_cutout.png new file mode 100644 index 0000000..81204c4 Binary files /dev/null and b/sprites/robot_cutout.png differ diff --git a/sprites/robot_cutout.png.import b/sprites/robot_cutout.png.import new file mode 100644 index 0000000..4307028 --- /dev/null +++ b/sprites/robot_cutout.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xes6mt2dd5gu" +path="res://.godot/imported/robot_cutout.png-b825d863e56b4040e1b056e369b0e91e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/robot_cutout.png" +dest_files=["res://.godot/imported/robot_cutout.png-b825d863e56b4040e1b056e369b0e91e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/tileset/village/tileset_village.tres b/tileset/village/tileset_village.tres index 830ce51..23ea6a6 100644 --- a/tileset/village/tileset_village.tres +++ b/tileset/village/tileset_village.tres @@ -367,7 +367,7 @@ texture = ExtResource("1") [resource] physics_layer_0/collision_layer = 1 -physics_layer_0/collision_mask = 5 +physics_layer_0/collision_mask = 13 terrain_set_0/mode = 0 terrain_set_0/terrain_0/name = "Village 0" terrain_set_0/terrain_0/color = Color(0.520131, 0.153738, 0.75213, 1)