diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/DwarfNPC.gd | 4 | ||||
| -rw-r--r-- | scripts/PlayerCharacter.gd | 25 |
2 files changed, 29 insertions, 0 deletions
diff --git a/scripts/DwarfNPC.gd b/scripts/DwarfNPC.gd index b55fff2..178179a 100644 --- a/scripts/DwarfNPC.gd +++ b/scripts/DwarfNPC.gd @@ -1,4 +1,5 @@ extends KinematicBody2D +class_name DwarfNPC export (NodePath) var target onready var target_node = get_node(target) @@ -20,3 +21,6 @@ func _process(_delta): var dx = target_x - self.position[0] var dir = -1 if dx < .0 else 1 $Sprite.set_scale(Vector2(dir, 1)) + +func get_dialogue(): + return [{ "name": "Dwarf", "body": "Hello, I'm a dwarf." }] diff --git a/scripts/PlayerCharacter.gd b/scripts/PlayerCharacter.gd index 83fa8bd..9c95854 100644 --- a/scripts/PlayerCharacter.gd +++ b/scripts/PlayerCharacter.gd @@ -3,8 +3,10 @@ class_name PlayerCharacter export (int) var speed = 8 export (float) var walk_wobble_coeff = 5 + var velocity = Vector2() var look_dir = 1 # right = 1, left = -1 +var dialogue_active_with: Node = null func get_input(): velocity = Vector2() @@ -35,10 +37,33 @@ func _process(_delta): look_dir = -1 $Sprite.set_scale(Vector2(look_dir, 1)) + +func run_dialogue(other): + dialogue_active_with = other + var dialogues: Array = other.get_dialogue() + for d in dialogues: + var name = d["name"] + var body = d["body"] + print("[%s] %s" % [name, body]) + func _physics_process(_delta): get_input() velocity = move_and_slide(velocity) + var slide_count = get_slide_count() + + # If there are no collisions, player must have exited dialogue + if slide_count == 0: + dialogue_active_with = null + + # If the player is colliding with a Dialogue group node and does not have an + # active dialogue, run dialogue with the node + for idx in slide_count: + var coll = get_slide_collision(idx) + if coll.collider.is_in_group("Dialogue") and dialogue_active_with == null: + dialogue_active_with = coll.collider + run_dialogue(coll.collider) + break func change_level(num: int): var new_scene = "res://scenes/Scene" + String(num) + ".tscn" |
