extends KinematicBody2D

class_name PersonBody

onready var person : PersonRoot = get_parent()
onready var sprite : AnimatedSprite = $PersonSprite

var hover = false
var held = false
var in_spot = false

func pickup():
	hover = false
	held = true
	#change cursor to clenched hand

func drop():	
	held = false
	hover = true
	# ensure collisions to avoid stacking persons
# warning-ignore:return_value_discarded
	move_and_slide(Vector2.ZERO, Vector2.UP)
	# apply the collision movement back to the root of the person
	person.global_position += position
	position = Vector2.ZERO
	#change cursor to idle hand

func _input_event(_viewport: Object, event: InputEvent, _shape_idx: int):	
	if event is InputEventMouseButton:		
		if event.button_index == BUTTON_LEFT and event.pressed:
			pickup()
		elif held and event.button_index == BUTTON_LEFT and !event.pressed:
			drop()

func _physics_process(_delta):
	if held:
		person.global_transform.origin = get_global_mouse_position()		

func _process(_delta):
	return
# warning-ignore:unreachable_code
	if hover:
		sprite.self_modulate = Color(randf(),randf(),randf(), 1)

func onMouseEnter():
	hover = true
	person.start_display()

func onMouseLeft():
	hover = false
	person.stop_display()
