extends RigidBody

var left = 0
var right = 0
var active = false
var right_active = false
var activation_margin = 0.1

var update_frequency = 2 # In secs. This isn't too fast-paced, so don't clog the network with updates every frame
var update_count = 0

var master_team_right = null
var friend_color
var enemy_color

var build_rate = 1.5

func _integrate_forces(state):
	var rot = get_rotation().x

	if active:
		activation_margin = 0
	if rot < -activation_margin:
		active = true
		right_active = false
	if rot > activation_margin:
		active = true
		right_active = true
	if active:
		if right_active == master_team_right:
			# We DO own the correct one; display left counting, blue
			get_node("../HUD/LeftTeam").add_color_override("font_color_shadow", friend_color)
			get_node("../HUD/RightTeam").add_color_override("font_color_shadow", Color(0,0,0,0))
		else:
			# We DO NOT own the correct one; display right counting, red
			get_node("../HUD/LeftTeam").add_color_override("font_color_shadow", Color(0,0,0,0))
			get_node("../HUD/RightTeam").add_color_override("font_color_shadow", enemy_color)

func _process(delta):

	# Figure out what team we're on
	# We have to do this here because we never know when the master player will actually be added
	if master_team_right == null:
		var master_player = get_node("/root/Level/Players/%d" % get_tree().get_network_unique_id())
		master_team_right = master_player.player_info.is_right_team
		friend_color = master_player.friend_color
		enemy_color = master_player.enemy_color

	# Count the percents
	if active:
		if right_active:
			right += delta * build_rate
		else:
			left += delta * build_rate
	update_count += delta
	if is_network_master() and update_count > update_frequency:
		update_count = 0
		rset_unreliable("left", left)
		rset_unreliable("right", right)

	# Check for game over
	var game_over = false
	var winner_right
	if left >= 100:
		game_over = true
		winner_right = false
		left = 100
	if right >= 100:
		game_over = true
		winner_right = true
		right = 100
	if game_over:
		var text = "You lose :("
		if winner_right == master_team_right:
			text = "You win!!!"
		get_node("../HUD/Finish").set_text(text)
		Engine.set_time_scale(0.1)

	# Render the percents
	var on_left = left
	var on_right = right
	# Always display OUR team on the LEFT (in blue)
	if master_team_right:
		on_left = right
		on_right = left
	get_node("../HUD/LeftTeam").set_text("%d%%" % on_left)
	get_node("../HUD/RightTeam").set_text("%d%%" % on_right)