updated detection of forbidden areas

This commit is contained in:
incredibleLeitman 2019-12-27 20:21:52 +01:00
parent c1a0d5672d
commit 88e184e52d
2 changed files with 20 additions and 11 deletions

View File

@ -5,6 +5,7 @@ export(NodePath) var _visibility_path: NodePath
export(int) var _player_follow_pill_level = 3 export(int) var _player_follow_pill_level = 3
var _visibility: Area var _visibility: Area
var _playerRef
func _ready(): func _ready():
@ -15,10 +16,15 @@ func _ready():
_visibility.connect("body_entered", self, "_on_body_entered_visibility") _visibility.connect("body_entered", self, "_on_body_entered_visibility")
_visibility.connect("body_exited", self, "_on_body_exited_visibility") _visibility.connect("body_exited", self, "_on_body_exited_visibility")
# TODO: does this implementation have to be that way?
for player in get_tree().get_nodes_in_group("Player"):
_playerRef = player
func _process(_delta): func _process(_delta):
# stop following player if pill level is high enough # stop following player if pill level is high enough and player is not in an illegal area
if current_target and Pills.get_round_level() > _player_follow_pill_level: if current_target and Pills.get_round_level() > _player_follow_pill_level and _playerRef.Is_in_Illegal_Area() == false:
Logger.info("player pill level ok and no illegal actions detected!")
current_target = null current_target = null
@ -28,8 +34,10 @@ func _on_body_entered_visibility(body: PhysicsBody):
if body.is_in_group("Player"): if body.is_in_group("Player"):
Logger.info("Seeing player!") Logger.info("Seeing player!")
# TODO: check if player is in illegal area # check if player is in illegal area
#var player = get_node("") if _playerRef.Is_in_Illegal_Area():
Logger.info("player is in illegal area - following!")
current_target = body.transform.origin
# If the player didn't take enough pills lately, they're suspicious -> Run towards them! # If the player didn't take enough pills lately, they're suspicious -> Run towards them!
if Pills.get_round_level() <= _player_follow_pill_level: if Pills.get_round_level() <= _player_follow_pill_level:

View File

@ -30,7 +30,7 @@ var _labelInteract: Label
var _dir = Vector3() var _dir = Vector3()
var _vel = Vector3() var _vel = Vector3()
var _is_sprinting : bool var _is_sprinting : bool
var _is_in_illegal_area : bool var _illegal_areas : int
var _prev_look var _prev_look
# TODO: move to global # TODO: move to global
@ -177,7 +177,7 @@ func _input(event):
func _on_area_entered (area: Area): func _on_area_entered (area: Area):
if area.is_in_group("Enemy"): if area.is_in_group("Enemy"):
Logger.info("ermahgerd they touched :-o !") Logger.info("ermahgerd they touched :-o !")
if _is_in_illegal_area: # or Pills.get_level() == 0: #< Pills.get_max() * 0.5: if _illegal_areas > 0: # or Pills.get_level() == 0: #< Pills.get_max() * 0.5:
# TODO: check why this does not work as intended: # TODO: check why this does not work as intended:
#var player = AudioStreamPlayer3D.new() #var player = AudioStreamPlayer3D.new()
#var audio_file = "res://Resources/Audio/dino-eat.wav" #var audio_file = "res://Resources/Audio/dino-eat.wav"
@ -193,13 +193,13 @@ func _on_area_entered (area: Area):
_reset_scene() # TODO: call per event -> also raise if Meldewesen is looking at player and pill level reaches treshold! _reset_scene() # TODO: call per event -> also raise if Meldewesen is looking at player and pill level reaches treshold!
elif area.is_in_group("Forbidden"): elif area.is_in_group("Forbidden"):
Logger.info("entering forbidden area!") Logger.info("entering forbidden area!")
_is_in_illegal_area = true _illegal_areas += 1
func _on_area_exited (area: Area): func _on_area_exited (area: Area):
if area.is_in_group("Forbidden"): if area.is_in_group("Forbidden"):
Logger.info("leaving forbidden area!") Logger.info("leaving forbidden area!")
_is_in_illegal_area = false _illegal_areas -= 1
func _reset_scene (): func _reset_scene ():
@ -214,4 +214,5 @@ func _reset_scene ():
func Is_in_Illegal_Area (): func Is_in_Illegal_Area ():
return _is_in_illegal_area #Logger.info("illegal areas: " + String(_illegal_areas))
return _illegal_areas > 0