Build validated industrial submarine cockpit

This commit is contained in:
chindit committed 2026-10-04 10:39:56 +02:00
1 parent dffe790926
commit fdebbafeae
19 files changed
+906 -277

No files matched your search

@@ -4,8 +4,17 @@ extends RefCounted
const NAVAL_STEEL_TEXTURE_PATH := (
"res://game/presentation/cockpit/assets/naval_painted_steel_albedo.png"
)
const GAUGE_FACE_TEXTURE_PATH := (
"res://game/presentation/cockpit/assets/analog_gauge_face_albedo.png"
const OXYGEN_GAUGE_FACE_TEXTURE_PATH := (
"res://game/presentation/cockpit/assets/oxygen_gauge_face_albedo_v2.png"
)
const BATTERY_GAUGE_FACE_TEXTURE_PATH := (
"res://game/presentation/cockpit/assets/battery_gauge_face_albedo_v2.png"
)
const HULL_GAUGE_FACE_TEXTURE_PATH := (
"res://game/presentation/cockpit/assets/hull_gauge_face_albedo_v2.png"
)
const DEPTH_GAUGE_FACE_TEXTURE_PATH := (
"res://game/presentation/cockpit/assets/depth_gauge_face_albedo_v2.png"
)
var painted_steel: Material
@@ -15,11 +24,22 @@ var brushed_steel: StandardMaterial3D
var brass: Material
var copper: Material
var rubber: Material
var gauge_face: StandardMaterial3D
var oxygen_gauge_face: StandardMaterial3D
var battery_gauge_face: StandardMaterial3D
var hull_gauge_face: StandardMaterial3D
var depth_gauge_face: StandardMaterial3D
var gauge_glass: StandardMaterial3D
var needle_paint: StandardMaterial3D
var instrument_screen: ShaderMaterial
var warm_emission: StandardMaterial3D
var safety_yellow: StandardMaterial3D
var signal_red: StandardMaterial3D
var indicator_green: StandardMaterial3D
var indicator_amber: StandardMaterial3D
var indicator_red: StandardMaterial3D
var sonar_grid: StandardMaterial3D
var sonar_trace: StandardMaterial3D
var warm_glass: StandardMaterial3D
func _init() -> void:
@@ -39,12 +59,12 @@ func _init() -> void:
)
overhead_steel = _textured_material(
_load_texture(NAVAL_STEEL_TEXTURE_PATH),
Color(0.64, 0.69, 0.68),
Color(0.88, 0.91, 0.88),
0.64,
0.56,
Vector3(1.6, 1.6, 1.6)
)
brushed_steel = _plain_material(Color(0.27, 0.30, 0.29), 0.82, 0.30)
brushed_steel = _plain_material(Color(0.42, 0.44, 0.42), 0.82, 0.30)
brass = _weathered_material(
Color(0.28, 0.18, 0.045),
Color(0.08, 0.16, 0.13),
@@ -60,16 +80,22 @@ func _init() -> void:
0.12
)
rubber = _plain_material(Color(0.012, 0.018, 0.018), 0.0, 0.92)
gauge_face = _textured_material(
_load_texture(GAUGE_FACE_TEXTURE_PATH),
Color(0.78, 0.74, 0.64),
0.02,
0.72
)
oxygen_gauge_face = _dedicated_gauge_material(OXYGEN_GAUGE_FACE_TEXTURE_PATH)
battery_gauge_face = _dedicated_gauge_material(BATTERY_GAUGE_FACE_TEXTURE_PATH)
hull_gauge_face = _dedicated_gauge_material(HULL_GAUGE_FACE_TEXTURE_PATH)
depth_gauge_face = _dedicated_gauge_material(DEPTH_GAUGE_FACE_TEXTURE_PATH)
gauge_glass = _glass_material()
needle_paint = _plain_material(Color(0.68, 0.055, 0.022), 0.12, 0.44)
instrument_screen = _screen_material()
warm_emission = _emissive_material(Color(0.96, 0.52, 0.18), 2.4)
safety_yellow = _plain_material(Color(0.48, 0.31, 0.035), 0.48, 0.53)
signal_red = _plain_material(Color(0.42, 0.025, 0.015), 0.38, 0.48)
indicator_green = _emissive_material(Color(0.05, 0.82, 0.24), 2.8)
indicator_amber = _emissive_material(Color(1.0, 0.43, 0.035), 2.8)
indicator_red = _emissive_material(Color(0.9, 0.045, 0.018), 2.8)
sonar_grid = _emissive_material(Color(0.02, 0.20, 0.22), 0.55)
sonar_trace = _emissive_material(Color(0.12, 0.78, 0.78), 1.8)
warm_glass = _warm_glass_material()
func _weathered_material(
@@ -161,6 +187,17 @@ func _load_texture(resource_path: String) -> ImageTexture:
return ImageTexture.create_from_image(image)
func _dedicated_gauge_material(resource_path: String) -> StandardMaterial3D:
var material := _textured_material(
_load_texture(resource_path),
Color(0.94, 0.92, 0.86),
0.02,
0.66
)
material.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA
return material
func _glass_material() -> StandardMaterial3D:
var material := StandardMaterial3D.new()
material.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA
@@ -203,3 +240,14 @@ func _emissive_material(color: Color, energy: float) -> StandardMaterial3D:
material.emission = color
material.emission_energy_multiplier = energy
return material
func _warm_glass_material() -> StandardMaterial3D:
var material := StandardMaterial3D.new()
material.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA
material.albedo_color = Color(1.0, 0.48, 0.12, 0.72)
material.roughness = 0.18
material.emission_enabled = true
material.emission = Color(1.0, 0.28, 0.045)
material.emission_energy_multiplier = 2.6
return material