51 lines
1.6 KiB
GDScript3
51 lines
1.6 KiB
GDScript3
|
|
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
|