diff --git a/client/.import/platform.png-fa6c1000359a082b3ed63552d71e9023.md5 b/client/.import/platform.png-fa6c1000359a082b3ed63552d71e9023.md5 new file mode 100644 index 0000000..5d656fb --- /dev/null +++ b/client/.import/platform.png-fa6c1000359a082b3ed63552d71e9023.md5 @@ -0,0 +1,3 @@ +source_md5="02860f21d0b06f5acf9d6f81718d443a" +dest_md5="29b11c828e308d1479c7681a6d77bbda" + diff --git a/client/.import/platform.png-fa6c1000359a082b3ed63552d71e9023.stex b/client/.import/platform.png-fa6c1000359a082b3ed63552d71e9023.stex new file mode 100644 index 0000000..1a19a98 Binary files /dev/null and b/client/.import/platform.png-fa6c1000359a082b3ed63552d71e9023.stex differ diff --git a/client/.import/player_parts.png-f69e345f37ad405be3288ca78a4b7531.md5 b/client/.import/player_parts.png-f69e345f37ad405be3288ca78a4b7531.md5 index 3c0e7c5..bad3a22 100644 --- a/client/.import/player_parts.png-f69e345f37ad405be3288ca78a4b7531.md5 +++ b/client/.import/player_parts.png-f69e345f37ad405be3288ca78a4b7531.md5 @@ -1,3 +1,3 @@ source_md5="4a4e86688ea9e233c2a97d2091f91210" -dest_md5="f46730c502307e961aea5b1794b64187" +dest_md5="0b5f4549065c5a8e08ef3984540c93ea" diff --git a/client/.import/player_parts.png-f69e345f37ad405be3288ca78a4b7531.stex b/client/.import/player_parts.png-f69e345f37ad405be3288ca78a4b7531.stex index f651a70..f2acb06 100644 Binary files a/client/.import/player_parts.png-f69e345f37ad405be3288ca78a4b7531.stex and b/client/.import/player_parts.png-f69e345f37ad405be3288ca78a4b7531.stex differ diff --git a/client/Assets/Art/Characters/player_parts.png.import b/client/Assets/Art/Characters/player_parts.png.import index 819f3fa..dd84893 100644 --- a/client/Assets/Art/Characters/player_parts.png.import +++ b/client/Assets/Art/Characters/player_parts.png.import @@ -20,7 +20,7 @@ compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 -flags/filter=true +flags/filter=false flags/mipmaps=false flags/anisotropic=true flags/srgb=2 diff --git a/client/Assets/Art/platform.aseprite b/client/Assets/Art/platform.aseprite new file mode 100644 index 0000000..ac44e24 Binary files /dev/null and b/client/Assets/Art/platform.aseprite differ diff --git a/client/Assets/Art/platform.png b/client/Assets/Art/platform.png new file mode 100644 index 0000000..1bddf54 Binary files /dev/null and b/client/Assets/Art/platform.png differ diff --git a/client/Assets/Art/platform.png.import b/client/Assets/Art/platform.png.import new file mode 100644 index 0000000..b136b9b --- /dev/null +++ b/client/Assets/Art/platform.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/platform.png-fa6c1000359a082b3ed63552d71e9023.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Art/platform.png" +dest_files=[ "res://.import/platform.png-fa6c1000359a082b3ed63552d71e9023.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=false +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/client/Assets/Stories/english_story.tres b/client/Assets/Stories/english_story.tres index 11679a2..36e61e3 100644 --- a/client/Assets/Stories/english_story.tres +++ b/client/Assets/Stories/english_story.tres @@ -6,6 +6,7 @@ script = ExtResource( 1 ) TYPE = "EXP_Story_editor" names = { +"intro_meet_ceo": 4, "intro_science": 1, "intro_science_followup": 3, "intro_text": 2 @@ -180,7 +181,7 @@ Central Tower.", }, "rect_size": Vector2( 324, 137 ), "slot_amount": 1, -"text": "Name: Veronica Dohwns", +"text": "Name: Veronica SCENE Gilmore", "type": "line" }, 2: { @@ -220,7 +221,7 @@ Central Tower.", }, "rect_size": Vector2( 324, 137 ), "slot_amount": 1, -"text": "Welcome Veroinica!", +"text": "Welcome SCENE!", "type": "line" }, 6: { @@ -264,8 +265,9 @@ for our services.", "name": "intro_science_followup", "nodes": { 1: { -"graph_offset": Vector2( -1300, -880 ), +"graph_offset": Vector2( -1300, -860 ), "links": { +0: 3, 1: 2 }, "rect_size": Vector2( 441, 172 ), @@ -276,7 +278,7 @@ for our services.", "type": "line" }, 2: { -"graph_offset": Vector2( -780, -840 ), +"graph_offset": Vector2( -780, -820 ), "links": { }, @@ -285,6 +287,346 @@ for our services.", "text": "Don't make such false accusations. Get back to your job and find the real culpurit.", "type": "line" +}, +3: { +"graph_offset": Vector2( -780, -1000 ), +"links": { + +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "Okay then.", +"type": "line" +} +} +}, +4: { +"available_nid": [ ], +"groups": [ "Introduction" ], +"human_readable_description": "First interaction with CEO Grant Blevins", +"name": "intro_meet_ceo", +"nodes": { +1: { +"graph_offset": Vector2( 60, 0 ), +"links": { +0: 2 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "Hello Scene.", +"type": "line" +}, +2: { +"graph_offset": Vector2( 540, 0 ), +"links": { +0: 3 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "It's good to see they have not eliminated you yet. Most my attempts +to find the mole up until this point have ended in swift failure.", +"type": "line" +}, +3: { +"graph_offset": Vector2( 1020, 0 ), +"links": { +0: 7, +1: 4 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 2, +"text": "You will not disappoint me, right Scene? +Of course not! +I will do my best", +"type": "line" +}, +4: { +"graph_offset": Vector2( 1500, 100 ), +"links": { +0: 5 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "Ha! Such a 21st century phrase.", +"type": "line" +}, +5: { +"graph_offset": Vector2( 1980, 100 ), +"links": { +0: 6 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "You will need more than just your wits to defeat this +traitor.", +"type": "line" +}, +6: { +"graph_offset": Vector2( 2460, 20 ), +"links": { +0: 8 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "So much lost...", +"type": "line" +}, +7: { +"graph_offset": Vector2( 1760, -80 ), +"links": { +0: 6 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "We will see. You had a great track record in the 21st century, +but we both remeber how your final job went.", +"type": "line" +}, +8: { +"graph_offset": Vector2( 2940, 20 ), +"links": { +0: 9, +1: 10 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 2, +"text": "What do you think of our facility here so far? +It's amazing! +I haven't seen much yet.", +"type": "line" +}, +9: { +"graph_offset": Vector2( 3760, 20 ), +"links": { +0: 11 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "It's always interesting hearing the perspectives of those from the past.", +"type": "line" +}, +10: { +"graph_offset": Vector2( 3380, 240 ), +"links": { +0: 9 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "Unfortunate.", +"type": "line" +}, +11: { +"graph_offset": Vector2( 4240, 20 ), +"links": { +0: 12 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "Now away with the pleasantries.", +"type": "line" +}, +12: { +"graph_offset": Vector2( 4720, 20 ), +"links": { +0: 13 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "There has been a concerning amount of leaks of secret projects +and internal data to our competitor Duke Enterprises.", +"type": "line" +}, +13: { +"graph_offset": Vector2( 5200, 20 ), +"links": { +0: 14 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "Due the volume and nature of the data, the one conspiring with +the Dukes must have extremely high security clearance.", +"type": "line" +}, +14: { +"graph_offset": Vector2( 5680, 20 ), +"links": { +0: 16 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "That is why I have given you nearly full access to our facilities. +This traitor could be anyone.", +"type": "line" +}, +15: { +"graph_offset": Vector2( 6660, 20 ), +"links": { +0: 17, +1: 19, +2: 20 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 3, +"text": "Do you have any questions before we get started? +Why me? +What year is it? +Where do I start?", +"type": "line" +}, +16: { +"graph_offset": Vector2( 6160, 20 ), +"links": { +0: 15 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "I'm trusting you Scene. It's not a common thing in our time, but I have +little choice.", +"type": "line" +}, +17: { +"graph_offset": Vector2( 7140, -100 ), +"links": { +0: 18 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "I have always been sympathatic to societies of the past. Things were done... +different than they are now.", +"type": "line" +}, +18: { +"graph_offset": Vector2( 7620, -100 ), +"links": { +0: 15 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "You were one of the best investigators of your time! It was sad +you got caught up in the events of the old capital.", +"type": "line" +}, +19: { +"graph_offset": Vector2( 7140, 80 ), +"links": { +0: 15 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "It 3024, making it around 1000 years since your death.", +"type": "line" +}, +20: { +"graph_offset": Vector2( 7140, 260 ), +"links": { +0: 28, +1: 21, +2: 22 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 3, +"text": "We have a shipment of biological materials coming in today. It seems +like the sort of thing we have had troubles with recently. +Okay, where? +What sort of troubles? +Biological materials?", +"type": "line" +}, +21: { +"graph_offset": Vector2( 7620, 300 ), +"links": { +0: 24 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "Some of the data ending up in the Duke's hands is shipping information.", +"type": "line" +}, +22: { +"graph_offset": Vector2( 7620, 500 ), +"links": { +0: 23 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "Yes, for our cloning facilities among other things.", +"type": "line" +}, +23: { +"graph_offset": Vector2( 8100, 500 ), +"links": { +0: 27 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "Without such shipments, you wouldn't be standing here.", +"type": "line" +}, +24: { +"graph_offset": Vector2( 8100, 300 ), +"links": { +0: 25, +1: 26 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 2, +"text": "We have had too many missing shipments stopped by the coporate police. +Coporate police? +Why would they stop the shipments?", +"type": "line" +}, +25: { +"graph_offset": Vector2( 8580, 260 ), +"links": { +0: 27 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "Once democratic powers fell, enforcement was placed in the hand of the Corporate Collective, +the closest thing to a centralized government.", +"type": "line" +}, +26: { +"graph_offset": Vector2( 8580, 420 ), +"links": { +0: 27 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "In corporate politics, our opposition likes to put in place agreements that +hinder our success. We are not alone in ignoring many of these agreements.", +"type": "line" +}, +27: { +"graph_offset": Vector2( 9060, 260 ), +"links": { +0: 28 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "Anyway,", +"type": "line" +}, +28: { +"graph_offset": Vector2( 9580, 100 ), +"links": { +0: 29 +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "This building's shipping facility is located on mid levels. They should +not be too far out of reach.", +"type": "line" +}, +29: { +"graph_offset": Vector2( 10060, 100 ), +"links": { + +}, +"rect_size": Vector2( 324, 137 ), +"slot_amount": 1, +"text": "Keep me up to date on your progress.", +"type": "line" } } } diff --git a/client/Nodes/NPCs/CEO.tscn b/client/Nodes/NPCs/CEO.tscn new file mode 100644 index 0000000..6c8f273 --- /dev/null +++ b/client/Nodes/NPCs/CEO.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://Scripts/Entities/NPCs/CEO.gd" type="Script" id=1] +[ext_resource path="res://Scripts/Component/StorySpeaker.gd" type="Script" id=2] +[ext_resource path="res://Assets/Art/Characters/business.png" type="Texture" id=3] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 5, 8 ) + +[node name="Scientist" type="Area2D"] +script = ExtResource( 1 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 3 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[node name="Speaker" type="Node" parent="."] +script = ExtResource( 2 ) diff --git a/client/Nodes/NPCs/Scientist.tscn b/client/Nodes/NPCs/Scientist.tscn new file mode 100644 index 0000000..17317be --- /dev/null +++ b/client/Nodes/NPCs/Scientist.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://Scripts/Entities/NPCs/IntroScientist.gd" type="Script" id=1] +[ext_resource path="res://Scripts/Component/StorySpeaker.gd" type="Script" id=2] +[ext_resource path="res://Assets/Art/Characters/scientist.png" type="Texture" id=3] + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 5, 8 ) + +[node name="Scientist" type="Area2D"] +position = Vector2( 167.084, 231.933 ) +script = ExtResource( 1 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 3 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 3 ) + +[node name="Speaker" type="Node" parent="."] +script = ExtResource( 2 ) diff --git a/client/Nodes/Player.tscn b/client/Nodes/Player.tscn index 28bbfe4..fc584cd 100644 --- a/client/Nodes/Player.tscn +++ b/client/Nodes/Player.tscn @@ -6,82 +6,82 @@ [ext_resource path="res://Scripts/Entities/Player.gd" type="Script" id=4] [sub_resource type="AtlasTexture" id=1] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 1, 7, 3, 4 ) [sub_resource type="AtlasTexture" id=2] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 2, 6, 1, 1 ) [sub_resource type="AtlasTexture" id=3] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 1, 1, 3, 4 ) [sub_resource type="AtlasTexture" id=4] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 7, 8, 1, 2 ) [sub_resource type="AtlasTexture" id=5] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 6, 10, 1, 2 ) [sub_resource type="AtlasTexture" id=6] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 6, 12, 1, 1 ) [sub_resource type="AtlasTexture" id=7] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 9, 8, 1, 2 ) [sub_resource type="AtlasTexture" id=8] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 10, 10, 1, 2 ) [sub_resource type="AtlasTexture" id=9] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 1, 11, 3, 2 ) [sub_resource type="AtlasTexture" id=10] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 1, 13, 3, 1 ) [sub_resource type="AtlasTexture" id=11] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 1, 14, 3, 1 ) [sub_resource type="AtlasTexture" id=12] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 1, 15, 3, 1 ) [sub_resource type="AtlasTexture" id=13] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 1, 17, 1, 2 ) [sub_resource type="AtlasTexture" id=14] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 1, 19, 1, 2 ) [sub_resource type="AtlasTexture" id=15] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 3, 17, 1, 2 ) [sub_resource type="AtlasTexture" id=16] -flags = 12 +flags = 8 atlas = ExtResource( 2 ) region = Rect2( 3, 19, 1, 2 ) diff --git a/client/Nodes/Tiles/tileset_science_lab.tres b/client/Nodes/Tiles/tileset_science_lab.tres index 4682400..c535502 100644 --- a/client/Nodes/Tiles/tileset_science_lab.tres +++ b/client/Nodes/Tiles/tileset_science_lab.tres @@ -1,6 +1,7 @@ -[gd_resource type="TileSet" load_steps=96 format=2] +[gd_resource type="TileSet" load_steps=98 format=2] [ext_resource path="res://Nodes/Tiles/tileset_science_lab.png" type="Texture" id=1] +[ext_resource path="res://Assets/Art/platform.png" type="Texture" id=2] [sub_resource type="OccluderPolygon2D" id=1] polygon = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) @@ -284,6 +285,9 @@ points = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) [sub_resource type="ConvexPolygonShape2D" id=94] points = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) +[sub_resource type="ConvexPolygonShape2D" id=95] +points = PoolVector2Array( 16, 9, 0, 9, 0, 7, 16, 7 ) + [resource] 47/name = "tileset_science_lab.png 47" 47/texture = ExtResource( 1 ) @@ -591,3 +595,33 @@ points = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] 47/z_index = 0 +48/name = "platform.png 48" +48/texture = ExtResource( 2 ) +48/tex_offset = Vector2( 0, 0 ) +48/modulate = Color( 1, 1, 1, 1 ) +48/region = Rect2( 0, 0, 16, 16 ) +48/tile_mode = 1 +48/autotile/bitmask_mode = 0 +48/autotile/bitmask_flags = [ ] +48/autotile/icon_coordinate = Vector2( 0, 0 ) +48/autotile/tile_size = Vector2( 16, 16 ) +48/autotile/spacing = 0 +48/autotile/occluder_map = [ ] +48/autotile/navpoly_map = [ ] +48/autotile/priority_map = [ ] +48/autotile/z_index_map = [ ] +48/occluder_offset = Vector2( 0, 0 ) +48/navigation_offset = Vector2( 0, 0 ) +48/shape_offset = Vector2( 0, 0 ) +48/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +48/shape = SubResource( 95 ) +48/shape_one_way = true +48/shape_one_way_margin = 1.0 +48/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": true, +"one_way_margin": 1.0, +"shape": SubResource( 95 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +48/z_index = 0 diff --git a/client/Scenes/World.scn b/client/Scenes/World.scn index a3872ab..2c8ec33 100644 Binary files a/client/Scenes/World.scn and b/client/Scenes/World.scn differ diff --git a/client/Scripts/Component/Interactable.gd b/client/Scripts/Component/Interactable.gd new file mode 100644 index 0000000..bfec2fa --- /dev/null +++ b/client/Scripts/Component/Interactable.gd @@ -0,0 +1,18 @@ +extends Area2D + +signal interacted + +func _ready(): + connect("body_entered", self, "_on_body_enter") + connect("body_exited", self, "_on_body_exit") + +func _on_body_enter(body): + if body.has_method("add_interactable"): + body.add_interactable(self) + +func _on_body_exit(body): + if body.has_method("remove_interactable"): + body.remove_interactable(self) + +func interact(): + emit_signal("interacted") diff --git a/client/Scripts/Component/StorySpeaker.gd b/client/Scripts/Component/StorySpeaker.gd index 536ac4b..635d727 100644 --- a/client/Scripts/Component/StorySpeaker.gd +++ b/client/Scripts/Component/StorySpeaker.gd @@ -30,11 +30,11 @@ func start_dialog(record : String): func start_dialog_did(dialog_id : int): gui = get_node("/root/World/GUI") - - nid = 1 - did = dialog_id - - process_message(story_reader.get_text(did, nid)) + if not gui.is_in_dialog(): + nid = 1 + did = dialog_id + + process_message(story_reader.get_text(did, nid)) func has_next_node(): return story_reader.has_slot(did, nid, 0) diff --git a/client/Scripts/Entities/MusicZone.gd b/client/Scripts/Entities/MusicZone.gd new file mode 100644 index 0000000..b3d6d4d --- /dev/null +++ b/client/Scripts/Entities/MusicZone.gd @@ -0,0 +1,11 @@ +extends Area2D + +export var music : AudioStream + +func _ready(): + connect("body_entered", self, "_on_body_entered") + +func _on_body_entered(body): + if body.has_method("user_input"): + if $"/root/MusicManager".stream != music: + $"/root/MusicManager".play_stream(music) diff --git a/client/Scripts/Entities/NPCs/CEO.gd b/client/Scripts/Entities/NPCs/CEO.gd new file mode 100644 index 0000000..2b83acb --- /dev/null +++ b/client/Scripts/Entities/NPCs/CEO.gd @@ -0,0 +1,9 @@ +extends "res://Scripts/Component/Interactable.gd" + +func _ready(): + connect("interacted", self, "_on_interact") + $Speaker.speaker_name = "CEO Grant Blevins" + #$Speaker.start_dialog("intro_science") + +func _on_interact(): + $Speaker.start_dialog("intro_meet_ceo") diff --git a/client/Scripts/Entities/NPCs/IntroScientist.gd b/client/Scripts/Entities/NPCs/IntroScientist.gd index 93052ea..1544d1d 100644 --- a/client/Scripts/Entities/NPCs/IntroScientist.gd +++ b/client/Scripts/Entities/NPCs/IntroScientist.gd @@ -1,7 +1,10 @@ -extends "res://Scripts/Component/StorySpeaker.gd" +extends "res://Scripts/Component/Interactable.gd" func _ready(): - start_dialog("intro_science") + connect("interacted", self, "_on_interact") + $Speaker.speaker_name = "Dr.Thadd" + $Speaker.start_dialog("intro_science") func _on_interact(): - start_dialog("intro_science_followup") + $Speaker.start_dialog("intro_science_followup") + diff --git a/client/Scripts/Entities/Player.gd b/client/Scripts/Entities/Player.gd index 74cdf19..fa5138d 100644 --- a/client/Scripts/Entities/Player.gd +++ b/client/Scripts/Entities/Player.gd @@ -12,6 +12,20 @@ export var jumpVelocity : float = -150 var moveMotion : float = 0 # Player Input ( <- & -> ) var motion : Vector2 = Vector2(0,0) # Player's current velocity +var gui + +var interactables = [] + +func add_interactable(interactable): + interactables.append(interactable) +func remove_interactable(interactable): + var loc = interactables.find(interactable) + if loc >= 0: + interactables.remove(loc) + +func _process(delta): + if Input.is_action_just_pressed("ui_accept") and len(interactables) > 0: + interactables[0].interact() func _physics_process(delta): @@ -20,7 +34,10 @@ func _physics_process(delta): if is_on_floor(): motion.y = 0 - user_input() + if not gui: + gui = get_node("/root/World/GUI") + elif not gui.is_in_dialog(): + user_input() # Apply velocity limits moveMotion = clamp(moveMotion, -maxMoveVelocity, maxMoveVelocity) @@ -32,6 +49,10 @@ func _physics_process(delta): func user_input(): + if is_on_floor() and Input.is_action_just_pressed("ui_up") and Input.is_action_pressed("ui_down"): + position.y = position.y + 2 + return + if(Input.is_action_pressed("ui_left")): moveMotion -= moveAcceleration if(Input.is_action_pressed("ui_right")): diff --git a/client/Scripts/Singletons/MusicManager.gd b/client/Scripts/Singletons/MusicManager.gd index 167a6ef..f8a3570 100644 --- a/client/Scripts/Singletons/MusicManager.gd +++ b/client/Scripts/Singletons/MusicManager.gd @@ -14,5 +14,11 @@ func play_music(song, loop=true): main_player.stream = track main_player.play() +func play_stream(track, loop = true): + looping = loop + main_player.stream = track + main_player.play() + func stop_music(): main_player.stop() + diff --git a/client/Scripts/Systems/GameGui.gd b/client/Scripts/Systems/GameGui.gd index d72d9a1..bf759d6 100644 --- a/client/Scripts/Systems/GameGui.gd +++ b/client/Scripts/Systems/GameGui.gd @@ -1,21 +1,18 @@ extends CanvasLayer +func is_in_dialog(): + return in_dialog -# Declare member variables here. Examples: -# var a = 2 -# var b = "text" - - -# Called when the node enters the scene tree for the first time. -func _ready(): - pass # Replace with function body. +var in_dialog = false func set_dialog(message, speaker=""): $Dialog.show() + in_dialog = true $Dialog/Textbox/Speaker.text = speaker $Dialog/Textbox/Body.text = message func finish_dialog(): + in_dialog = false $Dialog.hide() func clear_choices(): diff --git a/client/project.godot b/client/project.godot index f39137e..9f9b54a 100644 --- a/client/project.godot +++ b/client/project.godot @@ -27,6 +27,16 @@ MusicManager="*res://Scripts/Singletons/MusicManager.gd" enabled=PoolStringArray( "EXP-System-Dialog" ) +[input] + +ui_up={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null) + ] +} + [rendering] environment/default_environment="res://default_env.tres"