Initial commit
This commit is contained in:
17
Maps/Spaceship/RoomScripts/BasicRoom.gd
Normal file
17
Maps/Spaceship/RoomScripts/BasicRoom.gd
Normal file
@@ -0,0 +1,17 @@
|
||||
extends Node3D
|
||||
class_name BasicRoom
|
||||
|
||||
@export var SpaceshipLogicRef: ShipLogic = null
|
||||
@export var Lights: Array[Light3D]
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if !SpaceshipLogicRef: SpaceshipLogicRef = owner
|
||||
if SpaceshipLogicRef: SpaceshipLogicRef.addRoomToRoomList(self)
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
pass
|
||||
|
||||
func showLights(LightStatus: bool):
|
||||
for light in Lights:
|
||||
if light: light.visible = LightStatus
|
||||
1
Maps/Spaceship/RoomScripts/BasicRoom.gd.uid
Normal file
1
Maps/Spaceship/RoomScripts/BasicRoom.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://lmn08s8c5lfo
|
||||
54
Maps/Spaceship/RoomScripts/controll.gd
Normal file
54
Maps/Spaceship/RoomScripts/controll.gd
Normal file
@@ -0,0 +1,54 @@
|
||||
extends BasicRoom
|
||||
class_name ControlRoom
|
||||
@onready var steeringMinigame = $Monitor/SubViewport/SteeringMinigame
|
||||
|
||||
@onready var lightswitch = $LightSwitch/ButtonLogicToggleLightswitch
|
||||
@onready var switchPivot = $LightSwitch/SwitchPivot
|
||||
@onready var light = $OmniLight3D
|
||||
|
||||
@export var controllStick: Node3D
|
||||
@export var shipConditionDisplayNumber: int = 100
|
||||
@onready var shipConditionNumberLabel = $Monitor_001/SubViewport2/Control/ShipConditionNumber
|
||||
@onready var shipConditionNumberLabelSettings = shipConditionNumberLabel.label_settings
|
||||
|
||||
func _ready() -> void:
|
||||
if controllStick:
|
||||
controllStick.get_child(0).onPressed.connect(controllLeverPressed)
|
||||
steeringMinigame.collision.connect(onAstroidCollision)
|
||||
steeringMinigame.controllStick = controllStick
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if shipConditionNumberLabel.label_settings:
|
||||
if shipConditionDisplayNumber >70:
|
||||
shipConditionNumberLabelSettings.font_color = Color.GREEN
|
||||
elif shipConditionDisplayNumber <=30:
|
||||
shipConditionNumberLabelSettings.font_color = Color.RED
|
||||
else:
|
||||
shipConditionNumberLabelSettings.font_color = Color.YELLOW
|
||||
|
||||
if lightswitch.state:
|
||||
switchPivot.rotation.x = deg_to_rad(0)
|
||||
else:
|
||||
switchPivot.rotation.x = deg_to_rad(17)
|
||||
|
||||
if SpaceshipLogicRef:
|
||||
if SpaceshipLogicRef.power:
|
||||
light.visible = lightswitch.state
|
||||
else:
|
||||
light.visible = SpaceshipLogicRef.power
|
||||
else:
|
||||
return
|
||||
|
||||
if !SpaceshipLogicRef.shipFuel:
|
||||
steeringMinigame.active = false
|
||||
|
||||
shipConditionNumberLabel.text = str(shipConditionDisplayNumber) + "%"
|
||||
|
||||
|
||||
|
||||
func controllLeverPressed():
|
||||
steeringMinigame.activate()
|
||||
|
||||
func onAstroidCollision():
|
||||
if SpaceshipLogicRef:
|
||||
SpaceshipLogicRef.collisionWithAstroid()
|
||||
1
Maps/Spaceship/RoomScripts/controll.gd.uid
Normal file
1
Maps/Spaceship/RoomScripts/controll.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://b6rr4vk4esf3s
|
||||
6
Maps/Spaceship/RoomScripts/corridor_dead_end.gd
Normal file
6
Maps/Spaceship/RoomScripts/corridor_dead_end.gd
Normal file
@@ -0,0 +1,6 @@
|
||||
extends BasicRoom
|
||||
class_name CorridorDeadEnd
|
||||
|
||||
var gridSlots: Array[Vector2] = [Vector2(0,0),Vector2(1,0)]
|
||||
var doorSlots: Array[Vector3] = [Vector3(0,0,3)]
|
||||
var scenePath = "res://SpaceshipRooms/Corridors/CorridorDeadEnd.tscn"
|
||||
1
Maps/Spaceship/RoomScripts/corridor_dead_end.gd.uid
Normal file
1
Maps/Spaceship/RoomScripts/corridor_dead_end.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cww7fnikeau22
|
||||
38
Maps/Spaceship/RoomScripts/corridor_dead_end_breakable.gd
Normal file
38
Maps/Spaceship/RoomScripts/corridor_dead_end_breakable.gd
Normal file
@@ -0,0 +1,38 @@
|
||||
extends BasicRoom
|
||||
class_name CorridorDeadEndBreakable
|
||||
|
||||
@onready var wallShard: MeshInstance3D = $WallShard
|
||||
var broken: bool = false
|
||||
|
||||
@onready var interactBox: InteractBox = $InteractBox
|
||||
|
||||
@onready var holeProximety = $Area3D
|
||||
var repairCube: Area3D
|
||||
var toolBox: bool = false
|
||||
var interacted: bool = false
|
||||
|
||||
func updateWallVisibility(status: bool):
|
||||
broken = !status
|
||||
wallShard.visible = status
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
repairCube = null
|
||||
toolBox = false
|
||||
var objectsProxy: Array[Area3D] = holeProximety.get_overlapping_areas()
|
||||
for obj in objectsProxy:
|
||||
if obj.type == "RepairCube":
|
||||
repairCube = obj
|
||||
if obj.type == "ToolBox":
|
||||
toolBox = true
|
||||
|
||||
if repairCube and toolBox and interacted:
|
||||
updateWallVisibility(true)
|
||||
interacted = false
|
||||
repairCube.get_parent().queue_free()
|
||||
SpaceshipLogicRef.hullBreached = false
|
||||
|
||||
|
||||
func _on_interact_box_interacted_with(_playerRef: PlayerCharacter) -> void:
|
||||
interacted = true
|
||||
#Needs to be replaced with a repair minigame/ progress bar later
|
||||
@@ -0,0 +1 @@
|
||||
uid://or6760ji86d2
|
||||
6
Maps/Spaceship/RoomScripts/corridor_four_way.gd
Normal file
6
Maps/Spaceship/RoomScripts/corridor_four_way.gd
Normal file
@@ -0,0 +1,6 @@
|
||||
extends BasicRoom
|
||||
class_name CorridorFourWay
|
||||
|
||||
var gridSlots: Array[Vector2] = [Vector2(0,0),Vector2(1,0),Vector2(1,1),Vector2(1,-1),Vector2(2,0)]
|
||||
var doorSlots: Array[Vector3] = [Vector3(0,0,3),Vector3(2,0,1),Vector3(1,-1,4),Vector3(1,1,2)]
|
||||
var scenePath = "res://SpaceshipRooms/Corridors/CorridorLong.tscn"
|
||||
1
Maps/Spaceship/RoomScripts/corridor_four_way.gd.uid
Normal file
1
Maps/Spaceship/RoomScripts/corridor_four_way.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://pht6y700mip7
|
||||
6
Maps/Spaceship/RoomScripts/corridor_l_turn.gd
Normal file
6
Maps/Spaceship/RoomScripts/corridor_l_turn.gd
Normal file
@@ -0,0 +1,6 @@
|
||||
extends BasicRoom
|
||||
class_name CorridorLTurn
|
||||
|
||||
var gridSlots: Array[Vector2] = [Vector2(0,0),Vector2(1,0),Vector2(1,-1)]
|
||||
var doorSlots: Array[Vector3] = [Vector3(0,0,3),Vector3(1,-1,4)]
|
||||
var scenePath = "res://SpaceshipRooms/Corridors/CorridorLTurn.tscn"
|
||||
1
Maps/Spaceship/RoomScripts/corridor_l_turn.gd.uid
Normal file
1
Maps/Spaceship/RoomScripts/corridor_l_turn.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://77bdmv1wl21
|
||||
6
Maps/Spaceship/RoomScripts/corridor_long.gd
Normal file
6
Maps/Spaceship/RoomScripts/corridor_long.gd
Normal file
@@ -0,0 +1,6 @@
|
||||
extends BasicRoom
|
||||
class_name CorridorLong
|
||||
|
||||
var gridSlots: Array[Vector2] = [Vector2(0,0),Vector2(1,0),Vector2(2,0)]
|
||||
var doorSlots: Array[Vector3] = [Vector3(0,0,3),Vector3(2,0,1)]
|
||||
var scenePath = "res://SpaceshipRooms/Corridors/CorridorLong.tscn"
|
||||
1
Maps/Spaceship/RoomScripts/corridor_long.gd.uid
Normal file
1
Maps/Spaceship/RoomScripts/corridor_long.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dq1ol2epo2186
|
||||
6
Maps/Spaceship/RoomScripts/corridor_short.gd
Normal file
6
Maps/Spaceship/RoomScripts/corridor_short.gd
Normal file
@@ -0,0 +1,6 @@
|
||||
extends BasicRoom
|
||||
class_name CorridorShort
|
||||
|
||||
var gridSlots: Array[Vector2] = [Vector2(0,0),Vector2(1,0)]
|
||||
var doorSlots: Array[Vector3] = [Vector3(0,0,3),Vector3(1,0,1)]
|
||||
var scenePath = "res://SpaceshipRooms/Corridors/CorridorShort.tscn"
|
||||
1
Maps/Spaceship/RoomScripts/corridor_short.gd.uid
Normal file
1
Maps/Spaceship/RoomScripts/corridor_short.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://b808bc8l22smt
|
||||
6
Maps/Spaceship/RoomScripts/corridor_t_turn.gd
Normal file
6
Maps/Spaceship/RoomScripts/corridor_t_turn.gd
Normal file
@@ -0,0 +1,6 @@
|
||||
extends BasicRoom
|
||||
class_name CorridorTTurn
|
||||
|
||||
var gridSlots: Array[Vector2] = [Vector2(0,0),Vector2(1,0),Vector2(1,1),Vector2(1,-1)]
|
||||
var doorSlots: Array[Vector3] = [Vector3(0,0,3),Vector3(1,1,2),Vector3(1,-1,4)]
|
||||
var scenePath = "res://SpaceshipRooms/Corridors/CorridorTTurn.tscn"
|
||||
1
Maps/Spaceship/RoomScripts/corridor_t_turn.gd.uid
Normal file
1
Maps/Spaceship/RoomScripts/corridor_t_turn.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dod3myner76oy
|
||||
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
|
||||
1
Maps/Spaceship/RoomScripts/fuel_tank.gd.uid
Normal file
1
Maps/Spaceship/RoomScripts/fuel_tank.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bxnqx1moj7bb3
|
||||
53
Maps/Spaceship/RoomScripts/generator.gd
Normal file
53
Maps/Spaceship/RoomScripts/generator.gd
Normal file
@@ -0,0 +1,53 @@
|
||||
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
|
||||
1
Maps/Spaceship/RoomScripts/generator.gd.uid
Normal file
1
Maps/Spaceship/RoomScripts/generator.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://6loaamrfhwdc
|
||||
2
Maps/Spaceship/RoomScripts/starter.gd
Normal file
2
Maps/Spaceship/RoomScripts/starter.gd
Normal file
@@ -0,0 +1,2 @@
|
||||
extends BasicRoom
|
||||
class_name Starter
|
||||
1
Maps/Spaceship/RoomScripts/starter.gd.uid
Normal file
1
Maps/Spaceship/RoomScripts/starter.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://enftc34b0t86
|
||||
2
Maps/Spaceship/RoomScripts/storage.gd
Normal file
2
Maps/Spaceship/RoomScripts/storage.gd
Normal file
@@ -0,0 +1,2 @@
|
||||
extends BasicRoom
|
||||
class_name Storage
|
||||
1
Maps/Spaceship/RoomScripts/storage.gd.uid
Normal file
1
Maps/Spaceship/RoomScripts/storage.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cjo45t3oyu42p
|
||||
Reference in New Issue
Block a user