Files
SpaceBots/Maps/Spaceship/RoomScripts/generator.gd

54 lines
1.6 KiB
GDScript3
Raw Normal View History

2026-01-21 23:51:53 +01:00
extends BasicRoom
class_name Generator
@onready var SocketL: Area3D = $SocketL
@onready var SocketR: Area3D = $SocketR
@onready var SocketLPivot: Node3D = $SocketL/CellPivot
@onready var SocketRPivot: Node3D = $SocketR/CellPivot
var SocketLPowerCell: GrabableObject
var SocketRPowerCell: GrabableObject
func _process(_delta: float) -> void:
if SocketLPowerCell:
if SocketLPowerCell.isGrabbed:
SocketLPowerCell = null
if SocketRPowerCell:
if SocketRPowerCell.isGrabbed:
SocketRPowerCell = null
grabCell(SocketL,SocketLPowerCell,SocketLPivot)
grabCell(SocketR,SocketRPowerCell,SocketRPivot)
if !SpaceshipLogicRef: return
if !SocketLPowerCell and !SocketRPowerCell:
SpaceshipLogicRef.power = false
SpaceshipLogicRef.updateLights()
else:
SpaceshipLogicRef.power = true
SpaceshipLogicRef.updateLights()
func grabCell(Socket: Area3D, SocketCell: GrabableObject, SocketPivot: Node3D):
if Socket.has_overlapping_areas() and !SocketCell:
var potentialCell = getPowerCells(Socket)
if potentialCell: potentialCell = potentialCell.obj
else: return
if potentialCell.freeze == true: return
if !potentialCell.isGrabbed:
SocketCell = potentialCell
if Socket == SocketL: SocketLPowerCell = potentialCell
elif Socket == SocketR: SocketRPowerCell = potentialCell
SocketCell.freeze = true
SocketCell.global_position = SocketPivot.global_position
SocketCell.global_rotation = SocketPivot.global_rotation
func getPowerCells(Area: Area3D) -> GrabBox:
var overlappingAreas: Array[Area3D] = Area.get_overlapping_areas()
for a in overlappingAreas:
if typeof(a == GrabBox):
if a.type == "PowerCell":
return a
return null