extends Control @export var radial_stamina : bool = false var current_stam_bar var stam_bar_visible : bool = false var interact_visible : bool = false @onready var level_control = get_tree().current_scene @onready var player = level_control.player @onready var stamina_bar: TextureProgressBar = $StaminaBar @onready var stamina_bar_2: ProgressBar = $StaminaBar2 @onready var health_bar: ProgressBar = $HealthBar @onready var gun_name: Label = $"MarginContainer/VBoxContainer/Gun Name" @onready var ammo: Label = $MarginContainer/VBoxContainer/Ammo @onready var money: Label = $Money @onready var crosshair: TextureRect = $Crosshair const FULL_WHITE = Color(1, 1, 1, 1) const TRANSPARENT = Color(1, 1, 1, 0) const RED_COLOR = Color(1, 0, 0) const GREEN_COLOR = Color(0, 0.608, 0.172) const STAM_BAR_MAX_OPACITY = .7 # Called when the node enters the scene tree for the first time. func _ready() -> void: health_bar.max_value = level_control.start_health if radial_stamina: current_stam_bar = stamina_bar stamina_bar_2.visible = false else: current_stam_bar = stamina_bar_2 stamina_bar.visible = false # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: player = level_control.player if player != null: #HEALTH health_bar.value = level_control.health if level_control.health <= 2: change_color(health_bar,RED_COLOR,10,delta) health_bar.position += wiggle_element() else: change_color(health_bar,FULL_WHITE,10,delta) #MONEY money.text = "$" + str(level_control.money) if player.remaining_stamina/player.MAX_STAMINA >= .99: stam_bar_visible = false else: stam_bar_visible = true current_stam_bar.value = player.remaining_stamina ammo.text = str(level_control.ammo_current[level_control.current_gun_index]) +" - " + str(level_control.ammo_reserve[level_control.current_gun_index]) if player.gun != null: gun_name.text = player.gun.gun_name else: gun_name.visible = false if player.remaining_stamina < 25: change_color(current_stam_bar,RED_COLOR,10,delta) change_color(crosshair,RED_COLOR,10,delta) else: change_color(current_stam_bar,FULL_WHITE,10,delta) change_color(crosshair,FULL_WHITE,10,delta) if player.interact_ray.is_colliding(): if player.interact_ray.get_collider() != null: if player.interact_ray.get_collider().is_in_group("interact"): interact_visible = true else: interact_visible = false else: interact_visible = false if interact_visible == true: change_color(crosshair,GREEN_COLOR,10,delta) else: change_color(crosshair,FULL_WHITE,10,delta) ## FADE ELEMENTS IN AND OUT fade_in_out(current_stam_bar,STAM_BAR_MAX_OPACITY,stam_bar_visible,delta) func wiggle_element(): var rand_x = randf_range(-5,5) var rand_y = randf_range(-5,5) return Vector2(rand_x,rand_y) func change_color(element,color,speed,delta): element.modulate = lerp(element.modulate, Color(color.r,color.g,color.b,element.modulate.a), (delta * speed)/Engine.time_scale) func fade_in_out(element,MAX_OPACITY,visible,delta): var element_color = element.modulate if visible: element.modulate = lerp(element_color, Color(element_color.r,element_color.g,element_color.b,MAX_OPACITY),(delta * 10)/Engine.time_scale) else: element.modulate = lerp(element_color, Color(element_color.r,element_color.g,element_color.b,0),(delta * 10)/Engine.time_scale)