extends BasicRoom class_name FuelTank @onready var elevatorButtonTop: ButtonLogicImpulse = $ButtonBase/ButtonLogicImpulse @onready var elevatorButtonBottom: ButtonLogicImpulse = $ButtonBase_001/ButtonLogicImpulse01 @onready var elevator: MeshInstance3D = $ElevatorPlattform # y Pos 6.7 is top; -0.2 is Bottom var fuel: float = 100.0 var fuelDrainRate: float = 0.3 var canisterFillRate: float = 8.3 @onready var fuelMesh: MeshInstance3D = $Fuel @onready var fuelInputArea = $FuelInput/FuelInputArea var fuelCannistersInArea: Array[GrabBox] var elevatorDestination: bool = true #True is Up, False is Down var elevatorSpeed: float = 2 #Units/seccond func _ready() -> void: elevatorButtonTop.onPressed.connect(elevatorButtonPressed) elevatorButtonBottom.onPressed.connect(elevatorButtonPressed) func _process(delta: float) -> void: if elevatorDestination: elevator.position.y = clamp(elevator.position.y + elevatorSpeed*delta,-0.2,6.7) else: elevator.position.y = clamp(elevator.position.y - elevatorSpeed*delta,-0.2,6.7) fuelCannistersInArea = getFuelCanisters(fuelInputArea) fuel = clamp(fuel - fuelDrainRate*delta,0,100) fuel = clamp(fuel + canisterFillRate*fuelCannistersInArea.size()*delta,0,100) fuelMesh.scale.y = fuel/100 if SpaceshipLogicRef: SpaceshipLogicRef.shipFuel = fuel func elevatorButtonPressed(): elevatorDestination = !elevatorDestination func getFuelCanisters(Area: Area3D) -> Array[GrabBox]: var overlappingAreas: Array[Area3D] = Area.get_overlapping_areas() var returnArray: Array[GrabBox] for a in overlappingAreas: if typeof(a == GrabBox): if a.type == "FuelCanister": returnArray.push_back(a) return returnArray