extends "res://scripts/placeable.gd"
|
|
|
|
var touch_charge = 4
|
|
var being_touched = 0
|
|
|
|
func _process(delta):
|
|
if being_touched > 0:
|
|
maker_node.build_charge(touch_charge * delta)
|
|
|
|
func init(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 master_player = util.get_master_player()
|
|
var friendly
|
|
if master_player:
|
|
friendly = maker.player_info.is_right_team == master_player.player_info.is_right_team
|
|
else:
|
|
friendly = true # Doesn't matter, we're headless
|
|
var color = maker.friend_color if friendly else maker.enemy_color
|
|
|
|
var mat = SpatialMaterial.new()
|
|
color.a = 0.5
|
|
mat.flags_transparent = true
|
|
mat.albedo_color = color
|
|
get_node("MeshInstance").set_surface_material(0, mat)
|
|
|
|
.init(maker)
|
|
|
|
func count_bodies(with, player, delta):
|
|
if with == self:
|
|
if player != maker_node:
|
|
being_touched += delta
|
|
|
|
func on_looked_at(who, delta):
|
|
maker_node.on_looked_at(who, delta)
|
|
|