first version of EU AI Act game
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
extends ShapeCast3D
|
||||
|
||||
@export var prompt = Label
|
||||
@onready var bob: CharacterBody3D = $".."
|
||||
@onready var env: Node3D = $"../.."
|
||||
var current_collider
|
||||
signal grabbed
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
prompt = $Prompt
|
||||
prompt.text = ""
|
||||
DialogueManager.dialogue_ended.connect(_on_dialogue_ended)
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
if is_colliding():
|
||||
var collider = get_collider(0)
|
||||
|
||||
if collider is NPC_interactable:
|
||||
collider.turn_to_face_interacter(self.get_parent_node_3d())
|
||||
|
||||
if collider is Grabbable_Object:
|
||||
if collider is Battery:
|
||||
prompt.text = collider.battery_label
|
||||
if collider.grabbable == true and Input.is_action_just_pressed("grab"):
|
||||
grab(collider)
|
||||
bob.play_sound('pickup')
|
||||
|
||||
|
||||
elif (collider is BatteryBox2) and bob.grabbed_item is Battery and Input.is_action_just_pressed("insert"):
|
||||
if collider.current_power <= 0:
|
||||
bob.grabbed_item.insert_into_station(collider)
|
||||
bob.grabbed_item = null # battery is now in the box
|
||||
|
||||
elif (collider is BatteryBox2) and bob.grabbed_item == null and collider.battery_obj != null and Input.is_action_just_pressed("grab"):
|
||||
var battery_obj = collider.remove_battery()
|
||||
if battery_obj:
|
||||
bob.grabbed_item = battery_obj
|
||||
|
||||
|
||||
elif collider is Interactable_Object or collider is NPC_interactable:
|
||||
prompt.text = collider.prompt_message
|
||||
var thisTime = Time.get_unix_time_from_system()
|
||||
var deltaTime = thisTime - DialogueState.time_since_dialoge_open
|
||||
if collider.talkable == true and Input.is_action_just_pressed("talk") and (deltaTime > 0.5):
|
||||
current_collider = collider
|
||||
if DialogueState.is_dialogue_open == false:
|
||||
DialogueState.is_dialogue_open = true
|
||||
DialogueManager.show_chosen_dialogue_balloon(load(collider.dialogue), collider.game_balloon, "start", [collider])
|
||||
env.quiet_down_music()
|
||||
prompt.hide()
|
||||
elif bob.grabbed_item and bob.grabbed_item is Battery:
|
||||
prompt.text = bob.grabbed_item.battery_label
|
||||
else:
|
||||
prompt.text = ""
|
||||
|
||||
func _on_dialogue_ended(_resource: DialogueResource) -> void:
|
||||
prompt.show()
|
||||
if current_collider and current_collider is NPC_interactable:
|
||||
current_collider.dialogue_ended()
|
||||
env.reset_music_volume()
|
||||
|
||||
func grab(collider) -> void:
|
||||
collider.grab(bob)
|
||||
grabbed.emit()
|
||||
Reference in New Issue
Block a user