mirror of
https://github.com/ElHombreAlex/FTL-Faster-Than-Light-VR.git
synced 2026-10-06 01:00:06 +02:00
95 lines
3.5 KiB
GDScript
95 lines
3.5 KiB
GDScript
extends SceneTree
|
|
|
|
const ShipModel = preload("res://scripts/ship_model.gd")
|
|
const HullBar = preload("res://scripts/enemy_hull_bar.gd")
|
|
const Hazards = preload("res://scripts/room_hazards.gd")
|
|
const Voxels = preload("res://scripts/voxel_mesh.gd")
|
|
const UiAssets = preload("res://scripts/ftl_ui_assets.gd")
|
|
|
|
|
|
func _initialize() -> void:
|
|
call_deferred("_run")
|
|
|
|
|
|
func _run() -> void:
|
|
# Visual fixture only; no bridge, input, game state, or save writes.
|
|
root.size = Vector2i(1400, 900)
|
|
var ship := ShipModel.new()
|
|
root.add_child(ship)
|
|
var hazards := Hazards.new()
|
|
ship.add_child(hazards)
|
|
hazards.build()
|
|
hazards.set_live(ship, {"rooms": [{"visible": true, "fire_tiles": [{"x": -90, "y": 115}], "breach_tiles": [{"x": 90, "y": 115}]}]})
|
|
hazards.animate(0.42)
|
|
for i in range(4):
|
|
var door_center := Vector3((i - 1.5) * 0.49, 0.22, -0.02)
|
|
var frame := Voxels.make([Voxels.block(Vector3(-0.077, 0, 0), Vector3(0.025, 0.11, 0.034), Color("516b77")),
|
|
Voxels.block(Vector3(0.077, 0, 0), Vector3(0.025, 0.11, 0.034), Color("516b77")),
|
|
Voxels.block(Vector3(0, 0.06, 0), Vector3(0.179, 0.01, 0.034), Color("516b77"))])
|
|
frame.position = door_center
|
|
frame.scale = Vector3.ONE * 2.0
|
|
root.add_child(frame)
|
|
for side in [-1, 1]:
|
|
var leaf: MeshInstance3D = ship._make_door_leaf(i)
|
|
leaf.position = door_center + Vector3(side * 0.031 * 2.0, 0, 0)
|
|
leaf.scale = Vector3.ONE * 2.0
|
|
root.add_child(leaf)
|
|
_label(["STANDARD", "BLAST", "IMPROVED", "CREW BOOST"][i], Vector3((i - 1.5) * 0.49, 0.12, 0.10))
|
|
var floor := MeshInstance3D.new()
|
|
var box := BoxMesh.new()
|
|
box.size = Vector3(1.6, 0.025, 0.39)
|
|
floor.mesh = box
|
|
floor.position = Vector3(0, 0.065, 0.59)
|
|
var material := StandardMaterial3D.new()
|
|
material.albedo_color = Color("66767c")
|
|
floor.material_override = material
|
|
root.add_child(floor)
|
|
_label("FIRE", Vector3(-0.46, 0.065, 0.80))
|
|
_label("HULL BREACH", Vector3(0.46, 0.065, 0.80))
|
|
var environment := WorldEnvironment.new()
|
|
var settings := Environment.new()
|
|
settings.background_mode = Environment.BG_COLOR
|
|
settings.background_color = Color("101923")
|
|
settings.ambient_light_source = Environment.AMBIENT_SOURCE_COLOR
|
|
settings.ambient_light_color = Color("d4e7f2")
|
|
settings.ambient_light_energy = 0.45
|
|
environment.environment = settings
|
|
root.add_child(environment)
|
|
var light := DirectionalLight3D.new()
|
|
light.rotation_degrees = Vector3(-40, -25, 0)
|
|
light.light_energy = 1.6
|
|
root.add_child(light)
|
|
var camera := Camera3D.new()
|
|
camera.projection = Camera3D.PROJECTION_ORTHOGONAL
|
|
camera.size = 1.32
|
|
camera.position = Vector3(0.55, 1.8, 2.5)
|
|
root.add_child(camera)
|
|
camera.look_at(Vector3(0, 0.27, 0.33))
|
|
var life := HullBar.new()
|
|
root.add_child(life)
|
|
life.build()
|
|
life.set_state({"hull": 12, "hull_max": 20})
|
|
life.position = Vector3(0, 0.56, -0.15)
|
|
life.face_viewer(camera.position)
|
|
for i in range(12):
|
|
await process_frame
|
|
await RenderingServer.frame_post_draw
|
|
var path := ProjectSettings.globalize_path("res://local_game_data/ship_details_fixture.png")
|
|
root.get_texture().get_image().save_png(path)
|
|
print("SHIP_DETAIL_FIXTURE ", path, " fire_tiles=", hazards.fire_points.size(), " breach_tiles=", hazards.breach_points.size(), " door_tiers=0,1,2,3")
|
|
quit()
|
|
|
|
|
|
func _label(text: String, location: Vector3) -> void:
|
|
var label := Label3D.new()
|
|
label.text = text
|
|
label.font = UiAssets.font("body")
|
|
label.outline_size = 0
|
|
label.position = location
|
|
label.font_size = 38
|
|
label.texture_filter = BaseMaterial3D.TEXTURE_FILTER_NEAREST
|
|
label.pixel_size = 0.0016
|
|
label.billboard = BaseMaterial3D.BILLBOARD_ENABLED
|
|
label.no_depth_test = true
|
|
root.add_child(label)
|