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)