42 lines
987 B
GDScript3
42 lines
987 B
GDScript3
|
|
extends MapLogic
|
||
|
|
class_name ShipLogic
|
||
|
|
|
||
|
|
var roomList: Array[BasicRoom]
|
||
|
|
var power: bool = true
|
||
|
|
var hullBreached: bool = false
|
||
|
|
const HULL_BREACHED_CONDITION_DROP_SPEED: float = 0.8
|
||
|
|
var shipCondition: float = 100.0
|
||
|
|
var shipFuel: float = 100.0
|
||
|
|
|
||
|
|
@export var controllRoom: ControlRoom
|
||
|
|
@export var breakableRoom: CorridorDeadEndBreakable
|
||
|
|
|
||
|
|
func _process(delta: float) -> void:
|
||
|
|
finishAstarSetup()
|
||
|
|
|
||
|
|
if Multiplayer.alivePlayerDict.size() == 0:
|
||
|
|
looseMission()
|
||
|
|
|
||
|
|
|
||
|
|
if hullBreached:
|
||
|
|
shipCondition -= HULL_BREACHED_CONDITION_DROP_SPEED * delta
|
||
|
|
updateShipConditionScreen()
|
||
|
|
|
||
|
|
func addRoomToRoomList(room: BasicRoom):
|
||
|
|
roomList.push_back(room)
|
||
|
|
|
||
|
|
func updateLights():
|
||
|
|
for room in roomList:
|
||
|
|
room.showLights(power)
|
||
|
|
|
||
|
|
func collisionWithAstroid():
|
||
|
|
onCollision.emit()
|
||
|
|
hullBreached = true
|
||
|
|
shipCondition -= 10
|
||
|
|
if breakableRoom:
|
||
|
|
breakableRoom.updateWallVisibility(false)
|
||
|
|
|
||
|
|
func updateShipConditionScreen():
|
||
|
|
if controllRoom:
|
||
|
|
controllRoom.shipConditionDisplayNumber = clamp(shipCondition + 1,0,100)
|