diff options
Diffstat (limited to 'scenes/char/weener.gd')
| -rw-r--r-- | scenes/char/weener.gd | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/scenes/char/weener.gd b/scenes/char/weener.gd deleted file mode 100644 index b970b20..0000000 --- a/scenes/char/weener.gd +++ /dev/null @@ -1,110 +0,0 @@ -class_name Weener extends CharacterBody2D - -@onready var sprite := $Sprite -@onready var nav2d := $NavigationAgent2D - -const ref_speed := 500.0 -@onready var speed := ref_speed -@onready var target := position - -@onready var interactions := [] -var door: Door = null -#@onready var inventory := [] - -static var spawnpoint: int = -1 -static var sprite_flip: bool - -var input_listen := true - -func _physics_process(delta: float) -> void: - set_target() - if input_listen: - navigate(delta) - - -func _ready() -> void: - nav2d.navigation_finished.connect(func() -> void: - if door != null: - travel(door) - ) - sprite.flip_h = sprite_flip - - -func _exit_tree() -> void: - sprite_flip = sprite.flip_h - - -func set_target() -> void: - if Input.is_action_just_pressed("set_target"): - if !interactions.is_empty() and interactions[0].mouse_in: - interact(interactions[0]) - else: - nav2d.target_position = get_global_mouse_position() - if position.distance_to(nav2d.target_position) > 750: - speed = ref_speed * 1.8 - else: - speed = ref_speed - - -func navigate(delta: float) -> void: - if nav2d.is_navigation_finished(): - sprite.play("stand") - return - var next_path_position: Vector2 = nav2d.get_next_path_position() - velocity = global_position.direction_to(next_path_position) * speed - sprite.flip_h = velocity.x > 0 - position += velocity * delta - if speed > ref_speed: - sprite.play("run") - else: - sprite.play("walk") - - -func _on_area_entered(area): - interactions.insert(0, area) - - -func _on_area_exited(area): - interactions.erase(area) - - -func _on_walk_detect_area_entered(area: Area2D) -> void: - door = area as Door - - -func _on_walk_detect_area_exited(_area: Area2D) -> void: - door = null - - -func interact(item: Item) -> void: - match item.item_type: - Item.ItemTypes.NONE: - return - Item.ItemTypes.TALK: - print(" ".join(item.text)) - Item.ItemTypes.PICKUP: - input_listen = false - sprite.play("grab") - sprite.animation_finished.connect(func() -> void: input_listen = true) - Inventory.inventory.set(item.item_id, false) - item.queue_free() - print(Inventory.inventory) - Item.ItemTypes.USE: - #item.execute(item.uses) - for use in item.uses: - match use: - Item.UseTypes.TAKE_ITEM: - if item.useable_item in Inventory.inventory: - Inventory.inventory.set(item.useable_item, true) - print(Inventory.inventory) - item.used = true - Item.UseTypes.CLEAR: - if item.used: - item.queue_free() - _: - break - - -func travel(d: Door) -> void: - spawnpoint = d.go_to_spawnpoint - get_tree().change_scene_to_file(d.target_scene) |
