extends StaticBody

var maker_node
var touch_charge = 4
var being_touched = 0

func init(maker, color):
	maker_node = maker
	for player in get_node("/root/Level/Players").get_children():
		player.connect("body_entered", self, "count_bodies", [player, 1])
		player.connect("body_exited", self, "count_bodies", [player, -1])
	var mat = SpatialMaterial.new()
	color.a = 0.5
	mat.flags_transparent = true
	mat.albedo_color = color
	get_node("MeshInstance").set_surface_material(0, mat)

func place():
	# Originally, the wall is disabled to avoid weird physics
	get_node("CollisionShape").disabled = false
	get_node("MeshInstance").get_surface_material(0).flags_transparent = false

func make_last():
	var mat = get_node("MeshInstance").get_surface_material(0)
	mat.flags_transparent = true
	mat.albedo_color.a = 0.9

func count_bodies(with, player, delta):
	if with == self:
		if player != maker_node:
			being_touched += delta

func _process(delta):
	if being_touched > 0:
		maker_node.switch_charge += touch_charge * delta