This commit is contained in:
2026-01-21 23:40:20 +01:00
commit d1f8068081
478 changed files with 24902 additions and 0 deletions

116
script/ShipLogic.gd Normal file
View File

@@ -0,0 +1,116 @@
extends MapLogic
class_name ShipLogic
var main: Main
var generatorBiomeExists: bool = true
var levelGenSeed: int = 0
var lobbyScene: String = "res://Maps/Lobby/Lobby.tscn"
var roomList: Array[BasicRoom]
var generatorRoomList: Array[BasicRoom]
var hallwayLights: Array[OmniLight3D]
var power: bool = false
var hullBreached: bool = false
var finishingMission: bool = false
const HULL_BREACHED_CONDITION_DROP_SPEED: float = 0.8
var shipCondition: float = 100.0
var shipFuel: float = 100.0
var taskDict: Dictionary = {0: MissionTask.new("FixGenerator","Get the Generator back running.")}
@export var levelGenerator: LevelGenerator
#@export var controllRoom: ControlRoom
#@export var breakableRoom: CorridorDeadEndBreakable
func _ready() -> void:
main = get_node("/root/Main")
levelGenerator.generate(levelGenSeed)
main.mapScreen.addTask(taskDict[0])
func _process(_delta: float) -> void:
finishAstarSetup()
if Multiplayer.alivePlayerDict.size() == 0:
looseMission()
if taskDict[0].completed:
power = true
updateLights()
#if hullBreached:
#shipCondition -= HULL_BREACHED_CONDITION_DROP_SPEED * delta
#updateShipConditionScreen()
func finishMission() -> void:
if finishingMission: return
finishingMission = true
#Might be temp solution
var missionSucces: bool = true
for key in taskDict:
if !taskDict[key].completed:
missionSucces = false
break
if missionSucces:
main.missionEndScreen.label.text = "Success!"
else:
main.missionEndScreen.label.text = "Failure!"
main.displayMissionEndScreen = true
await get_tree().create_timer(8).timeout
main.displayMissionEndScreen = false
main.changeMenu(main.hud)
main.changeMap.rpc(lobbyScene)
func setSeed(mapSeed: int) -> void:
levelGenSeed = mapSeed
func addRoomToRoomList(room: BasicRoom) -> void:
roomList.push_back(room)
if room.biomeName == "generator":
generatorRoomList.push_back(room)
func updateLights() -> void:
for room in roomList:
room.showLights(power)
for light in hallwayLights:
light.visible = power
#Julian was here
func solveTask(id: int) -> void:
taskDict[id].completed = true
main.mapScreen.completeTask(taskDict[id])
##TODO
#func unSolveTask(id: int) -> void:
#taskDict[id].completed = false
#main.mapScreen.completeTask(taskDict[id])
func onLevelGenFinished() -> void:
if generatorBiomeExists:
var mainRoom: Generator = generatorRoomList[0]
for n in generatorRoomList.size()-1:
mainRoom.cellSpawners.append_array(generatorRoomList[n+1].powerCellSpawners)
mainRoom.wireSpawners.append_array(generatorRoomList[n+1].wireSpawners)
mainRoom.Ready()
#func collisionWithAstroid():
#onCollision.emit()
#hullBreached = true
#shipCondition -= 10
#if breakableRoom:
#breakableRoom.updateWallVisibility(false)
#
#func updateShipConditionScreen():
#if controllRoom:
#controllRoom.shipConditionDisplayNumber = clamp(shipCondition + 1,0,100)