extends StaticBody2D class_name GameObjectPowerStorage const MAX_CHARGE = 100000.0 var open = false var attached = true onready var activationRange = $ActivationRange as ActivationRange onready var manager = $PowerManager as PowerManager export var current_charge = MAX_CHARGE export var max_discharge_rate = 200 func _ready(): if not Engine.editor_hint: activationRange.visible = true func _physics_process(delta: float): if manager.wired: if current_charge > 0: manager.power_source = min(current_charge, max_discharge_rate) if manager.power_load > 0: current_charge -= manager.power_load * delta if PowerNetwork.DEBUG: update() $Control/PowerUI.displayed_charge = current_charge func _input(event): if event is InputEventMouseButton and event.pressed and not is_inside and open: open = false $UIAnimation.play("fadeout") func _input_event(_viewport, event, _shape_idx): if Engine.editor_hint: return if event is InputEventMouseButton and event.pressed and not open: # Must be in range if activationRange.in_range(): open = true $Control/PowerUI.visible = true $UIAnimation.play("fadein") var is_inside = false func _ui_focus_changed(entered): is_inside = entered func _ui_fade_completed(anim_name): if anim_name == "fadeout": $Control/PowerUI.visible = false func _force_close_ui(): if open: open = false $UIAnimation.play("fadeout") func _draw(): if PowerNetwork.DEBUG and manager.wired: var charge_px = int(current_charge / MAX_CHARGE * 32) var charge_color = Color.greenyellow if charge_px < 20: charge_color = Color.yellow if charge_px < 10: charge_color = Color.red draw_rect(Rect2(32, 32-charge_px, 4, charge_px), charge_color)