mirror of
https://github.com/Steffo99/swear-jar.git
synced 2024-11-25 17:14:20 +00:00
39 lines
1.2 KiB
GDScript
39 lines
1.2 KiB
GDScript
extends Area2D
|
|
class_name Evaluator
|
|
## aggiunge al totale i valori dei Valuable che ci body_enterano e sottrae quelli che ci body_exitano
|
|
|
|
|
|
## The current amount of value evaluated.
|
|
var total_value: int = 0
|
|
|
|
## The types of [Collectible]s to value.
|
|
##
|
|
## The strings will match only if exactly the same.
|
|
#@export var collecting_types: Array[StringName]
|
|
|
|
## The collision mask to check colliding body against.
|
|
@export_flags_2d_physics var collecting_collision_mask: int
|
|
|
|
## The evaluator has added the value of an object to the total.
|
|
signal added(what: PhysicsBody2D, total_value: int)
|
|
## The evaluator has removed the value of an object to the total.
|
|
signal removed(what: PhysicsBody2D)
|
|
|
|
signal score_changed(total_value: int)
|
|
|
|
func _on_body_entered(body):
|
|
if body is PhysicsBody2D:
|
|
if body.collision_layer & collecting_collision_mask:
|
|
var evaluable: Valuable = body.get_node("Valuable")
|
|
total_value += evaluable.value
|
|
evaluable.evaluate()
|
|
score_changed.emit(total_value)
|
|
|
|
func _on_body_exited(body):
|
|
if body is PhysicsBody2D:
|
|
if body.collision_layer & collecting_collision_mask:
|
|
var evaluable: Valuable = body.get_node("Valuable")
|
|
total_value -= evaluable.value
|
|
evaluable.evaluate()
|
|
score_changed.emit(total_value)
|
|
|