This commit is contained in:
team3
2026-09-16 16:15:13 +02:00
parent b9d6b115c0
commit f1c78f66f4
17 changed files with 676 additions and 458 deletions

View File

@@ -8,6 +8,7 @@ const WALL_SEGS := 20 ## Bandensegmente - Godot kennt keinen hohlen Zylin
const WALL_H := 0.55 ## unsichtbare Begrenzung, damit nichts herausspringt
const SEAT_ARC := ZONE_RAD * 2.0 + 0.85 ## Bogenlänge, die ein Platz am Tischrand braucht
const MIN_ZONE_R := 1.15
const Stoffe = preload("res://scripts/stoffe.gd") ## Holz, Filz, Messing aus Rauschen
const RIM_RUHE := Color(0.22, 0.15, 0.09) ## Zonenrand, wenn der Platz wartet
const RIM_ZUG := Color(0.85, 0.66, 0.22) ## Zonenrand des Platzes, der dran ist
const TILT_DEG := 15.0 ## Neigung der Kamera gegen die Senkrechte
@@ -32,7 +33,7 @@ var plates: Array[Sprite3D] = []
var rims: Array[MeshInstance3D] = [] ## Rand der Zone, leuchtet beim Zug
var topf_muenzen: Dictionary = {} ## Wurfnummer -> Münze in der Tischmitte
static var _muenz_mesh: CylinderMesh
static var _muenz_mat: StandardMaterial3D
static var _muenz_mat: ShaderMaterial
var dice: Array = [] ## seat -> Array[Die]
var camera: Camera3D
@@ -117,7 +118,7 @@ func _build_room() -> void:
tcm.height = 0.12
tmi.mesh = tcm
tmi.position = Vector3(0, TABLE_H - 0.06, 0)
tmi.material_override = _mat(Color(0.10, 0.28, 0.17), 0.85)
tmi.material_override = Stoffe.filz(Color(0.10, 0.28, 0.17), table_r, 0.35)
table.add_child(tmi)
add_child(table)
@@ -129,7 +130,7 @@ func _build_room() -> void:
lcm.height = TABLE_H - 0.12
leg.mesh = lcm
leg.position = Vector3(0, (TABLE_H - 0.12) * 0.5, 0)
leg.material_override = _mat(Color(0.16, 0.11, 0.07), 0.7)
leg.material_override = Stoffe.holz(Color(0.30, 0.19, 0.09), Color(0.16, 0.10, 0.05), 0.5, 4.0)
add_child(leg)
@@ -166,7 +167,7 @@ func _build_seat(i: int) -> void:
fm.radial_segments = 32
felt.mesh = fm
felt.position = Vector3(0, 0.006, 0)
felt.material_override = _mat(Color(0.07, 0.20, 0.13), 0.95)
felt.material_override = Stoffe.filz(Color(0.07, 0.20, 0.13), ZONE_RAD, 0.6)
zone.add_child(felt)
# Sichtbarer Rand
@@ -193,7 +194,9 @@ func _build_seat(i: int) -> void:
cm.height = 0.44
cup_mi.mesh = cm
cup_mi.position = Vector3(0, 0.22, 0)
cup_mi.material_override = _mat(Color(0.35, 0.12, 0.10), 0.5)
# Enge, weiche Maserung: die Ringe laufen am Becher senkrecht, zu grob sähe
# das nach Fassdauben aus.
cup_mi.material_override = Stoffe.holz(Color(0.40, 0.17, 0.11), Color(0.30, 0.12, 0.08), 0.5, 5.0)
cup.add_child(cup_mi)
cups.append(cup)
cup_tweens.append(null)
@@ -547,7 +550,7 @@ func set_topf(liste: Array, ziel := -1) -> void:
tw.tween_callback(mi.queue_free)
static var _muenz_mat_wappen: StandardMaterial3D
static var _muenz_mat_wappen: ShaderMaterial
static var _praeg_mesh: TorusMesh
static var _praeg_mat: StandardMaterial3D
@@ -564,17 +567,10 @@ static func _muenz_form() -> CylinderMesh:
return _muenz_mesh
static func _muenz_stoff(wappen: bool) -> StandardMaterial3D:
static func _muenz_stoff(wappen: bool) -> ShaderMaterial:
if _muenz_mat == null:
_muenz_mat = StandardMaterial3D.new()
_muenz_mat.albedo_color = Color(0.80, 0.62, 0.26)
_muenz_mat.metallic = 0.85
_muenz_mat.roughness = 0.35
_muenz_mat.emission_enabled = true
_muenz_mat.emission = Color(0.55, 0.40, 0.12)
_muenz_mat.emission_energy_multiplier = 0.35
_muenz_mat_wappen = _muenz_mat.duplicate()
_muenz_mat_wappen.emission_energy_multiplier = 0.9
_muenz_mat = Stoffe.messing(0.35)
_muenz_mat_wappen = Stoffe.messing(0.9)
return _muenz_mat_wappen if wappen else _muenz_mat