| export var color:Color | export var color:Color | ||||
| export var transition_rate = 0.75 | export var transition_rate = 0.75 | ||||
| var _body = null | |||||
| var _triggered = false | |||||
| func _dominant_color(): | func _dominant_color(): | ||||
| if color.r > color.g and color.r > color.b: | if color.r > color.g and color.r > color.b: | ||||
| $LeftDoor.transition_rate = transition_rate | $LeftDoor.transition_rate = transition_rate | ||||
| $RightDoor.set_color(color) | $RightDoor.set_color(color) | ||||
| $RightDoor.transition_rate = transition_rate | $RightDoor.transition_rate = transition_rate | ||||
| set_process(true) | |||||
| func _process(delta): | |||||
| if _body == null or _triggered: | |||||
| return | |||||
| var mood = _body.get_mood() | |||||
| var dc = _dominant_color() | |||||
| if (dc == "r" and mood.is_aggressive()) or \ | |||||
| (dc == "g" and mood.is_needie()) or \ | |||||
| (dc == "b" and mood.is_content()) or \ | |||||
| (dc == "n" and mood.is_neutral()): | |||||
| _triggered = true | |||||
| open() | |||||
| func open(): | func open(): | ||||
| $LeftDoor.open() | $LeftDoor.open() | ||||
| func _on_Area2D_body_entered(body): | func _on_Area2D_body_entered(body): | ||||
| if body.is_in_group("Player"): | |||||
| var mood = body.get_mood() | |||||
| var dc = _dominant_color() | |||||
| print ("Dominant Color: ", dc) | |||||
| print ("Is Aggressive: ", mood.is_aggressive()) | |||||
| print ("Is Needie: ", mood.is_needie()) | |||||
| print ("Is Content: ", mood.is_content()) | |||||
| if (dc == "r" and mood.is_aggressive()) or \ | |||||
| (dc == "g" and mood.is_needie()) or \ | |||||
| (dc == "b" and mood.is_content()) or \ | |||||
| (dc == "n" and mood.is_neutral()): | |||||
| open() | |||||
| if _body == null and body.is_in_group("Player"): | |||||
| _body = body | |||||
| _triggered = false | |||||
| func _on_Area2D_body_exited(body): | func _on_Area2D_body_exited(body): | ||||
| if body.is_in_group("Player"): | |||||
| if body == _body: | |||||
| _body = null | |||||
| _triggered = false | |||||
| close() | close() |