Files
SpaceBots/.svn/pristine/38/38cc9029bef777f5d63d799c3376ef14d50bdd04.svn-base

51 lines
1.6 KiB
Plaintext
Raw Normal View History

2026-01-21 23:51:53 +01:00
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