extends "res://scripts/player.gd"

onready var placement = preload("res://scripts/placement.gd").new(self, "res://scenes/heroes/1_wall.tscn")
onready var place_wall_ability = get_node("MasterOnly/PlaceWall")

export var looked_at_charge_suck = 25 # charge / sec

# --- Godot overrides ---

func _ready():
	placement.start_action = "hero_1_place_wall"
	placement.confirm_action = "hero_1_confirm_wall"
	placement.delete_action = "hero_1_remove_wall"
	placement.max_placed = 5

func _process(delta):
	if is_network_master():
		var can_build = charge > place_wall_ability.cost
		if can_build:
			if placement.place_input():
				build_charge(-place_wall_ability.cost)

func _exit_tree():
	._exit_tree()
	if placement:
		placement.clear()

# --- Player overrides ---

func spawn():
	.spawn()
	if placement:
		placement.clear()

# --- Own ---

# Passive: suck the charge out of people who look at us!
# This is a special method called by player when any object is looked at
func on_looked_at(who, delta):
	# Why do we check this if we can't look at ourselves? Walls call this method from their looked_at
	# Also, why not use util.is_friendly? Because we're not master, we're slave (looker is master)
	if who.player_info.is_right_team != player_info.is_right_team:
		var subtracted = who.build_charge(-looked_at_charge_suck * delta)
		build_charge(-subtracted)
		# We rset our charge because otherwise it won't be acknowledged
		# because we're not master
		# The *PICKER* is master, we're slave! Well, let's flip that for a mo'
		rset("charge", charge)