door and interactable objects

pull/2/head
Sascha 2024-06-12 13:36:15 +07:00
parent 79d0f07c99
commit 53a21be4ca
10 changed files with 279 additions and 18 deletions

@ -241,7 +241,6 @@ _data = {
[node name="Chest" type="Node3D"]
script = ExtResource("1_jught")
state = 2
[node name="coin_stack_medium" parent="." instance=ExtResource("2_resnj")]
transform = Transform3D(0.75, 0, 0, 0, 0.75, 0, 0, 0, 0.75, 0, 0, 0)

@ -1,7 +1,7 @@
[gd_scene load_steps=12 format=4 uid="uid://c8tec0l3liet0"]
[ext_resource type="Texture2D" uid="uid://dvkrw7iq1wb3d" path="res://resources/models/dungeon/dungeon_texture.png" id="1_36wbj"]
[ext_resource type="Script" path="res://scripts/chest.gd" id="1_eabtu"]
[ext_resource type="Script" path="res://scripts/item_interactable.gd" id="1_eabtu"]
[ext_resource type="PackedScene" uid="uid://dt6h2uw768kid" path="res://resources/models/dungeon/coin_stack_medium.gltf" id="2_phmxy"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p1j55"]

@ -1,7 +1,7 @@
[gd_scene load_steps=19 format=4 uid="uid://bh4kdk3huhnrr"]
[ext_resource type="Texture2D" uid="uid://dvkrw7iq1wb3d" path="res://resources/models/dungeon/dungeon_texture.png" id="1_qgxoc"]
[ext_resource type="Script" path="res://scripts/destructable_object.gd" id="1_yso3r"]
[ext_resource type="Script" path="res://scripts/item_desctructable.gd" id="1_yso3r"]
[ext_resource type="Script" path="res://scripts/hurtbox.gd" id="2_rn274"]
[ext_resource type="AudioStream" uid="uid://bxnu674tk5euv" path="res://resources/audio/wallhit.mp3" id="4_6vgpt"]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,9 +1,6 @@
class_name Chest
extends Item
class_name Chest extends InteractableItem
@onready var chest_lid: StaticBody3D = $chest/chest_lid
@onready var interaction_area: InteractionArea = $InteractionArea
@onready var animation_player: AnimationPlayer = $AnimationPlayer
@export var gold_amount := 10
var is_empty := false
@ -12,17 +9,18 @@ func _ready() -> void:
state_changed.connect(_on_state_changed)
interaction_area.interact = Callable(self, "_on_interact")
if gold_amount == 0: is_empty = true
state = States.closed
func _on_interact() -> void:
match state:
States.closed:
state = States.opened
if is_empty:
interaction_area.action_name = "close"
interaction_area.action_name = "close chest"
else:
interaction_area.action_name = "collect"
interaction_area.action_name = "collect gold"
States.opened:
interaction_area.action_name = "close"
interaction_area.action_name = "close chest"
if is_empty:
state = States.closed
else:
@ -30,7 +28,7 @@ func _on_interact() -> void:
GameManager.player.gold += gold_amount
state = States.looted
States.looted:
interaction_area.action_name = "open"
interaction_area.action_name = "open chest"
state = States.closed
func _on_state_changed(new_state: States) -> void:

@ -3,11 +3,17 @@ extends Node2D
@onready var player : Player = get_tree().get_first_node_in_group("player")
@onready var label: Label = $Label
const base_text = "[E] or [Y] to "
var base_text: String
var active_areas := []
var can_interact := true
func _ready() -> void:
var interact_keys = InputMap.action_get_events("interact")
base_text = interact_keys[0].as_text() + " to "
#for interact_key in interact_keys:
#base_text = interact_key.as_text() + " to "
print(base_text)
func register_area(area: InteractionArea) -> void:
active_areas.push_back(area)

@ -1,4 +1,4 @@
class_name DesctructableObject extends Item
class_name DesctructableItem extends Item
@onready var particles: GPUParticles3D = $Particles
@onready var mesh: MeshInstance3D = $Mesh

@ -0,0 +1,24 @@
class_name InteractableItem extends Item
@onready var interaction_area: InteractionArea = $InteractionArea
@onready var animation_player: AnimationPlayer = $AnimationPlayer
#func _ready() -> void:
#state_changed.connect(Callable(self, "_on_state_changed"))
#interaction_area.interact = Callable(self, "_on_interact")
#func _on_interact() -> void:
#match state:
#States.closed:
#state = States.opened
#interaction_area.action_name = "open"
#States.opened:
#state = States.closed
#interaction_area.action_name = "close"
#
#func _on_state_changed(new_state: States) -> void:
#match new_state:
#States.opened:
#animation_player.play("open")
#States.closed:
#animation_player.play("close")

@ -0,0 +1,20 @@
class_name WallDoorway extends InteractableItem
func _ready() -> void:
state_changed.connect(_on_state_changed)
interaction_area.interact = Callable(self, "_on_interact")
state = States.closed
func _on_interact() -> void:
match state:
States.closed:
animation_player.play("open")
States.closed:
animation_player.play("close")
func _on_state_changed(new_state: States) -> void:
match new_state:
States.closed:
interaction_area.action_name = "open door"
States.opened:
interaction_area.action_name = "close door"