first
This commit is contained in:
50
Maps/Spaceship/RoomScripts/fuel_tank.gd
Normal file
50
Maps/Spaceship/RoomScripts/fuel_tank.gd
Normal file
@@ -0,0 +1,50 @@
|
||||
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
|
||||
Reference in New Issue
Block a user