This commit is contained in:
2026-05-14 19:11:10 +02:00
parent 2d4002bd3f
commit 52ad83a96d
15 changed files with 169 additions and 31 deletions

View File

@@ -2,6 +2,7 @@ extends StaticBody3D
@export var stats_resource: PortalStats
@export var is_red: bool = false
@export var is_return: bool = false
@onready var mesh: MeshInstance3D = $Mesh
@onready var name_label: Label3D = $NameLabel
@@ -22,7 +23,15 @@ func _ready() -> void:
stats_resource.is_red = is_red
Stats.register(self, stats_resource)
enter_area.body_entered.connect(_on_body_entered)
if is_red:
if is_return:
var mat: StandardMaterial3D = StandardMaterial3D.new()
mat.albedo_color = Color(1.0, 0.85, 0.3)
mat.emission_enabled = true
mat.emission = Color(1.0, 0.8, 0.2)
mat.emission_energy_multiplier = 1.2
mesh.material_override = mat
name_label.text = "Zurück"
elif is_red:
var mat: StandardMaterial3D = StandardMaterial3D.new()
mat.albedo_color = Color(0.95, 0.2, 0.2)
mat.emission_enabled = true
@@ -45,7 +54,10 @@ func _on_body_entered(body: Node) -> void:
return
triggered = true
EventBus.portal_entered.emit(self, body)
_request_enter.rpc_id(1, is_red, global_position)
if is_return:
_request_return.rpc_id(1)
else:
_request_enter.rpc_id(1, is_red, global_position)
@rpc("any_peer", "reliable", "call_local")
func _request_enter(red: bool, return_pos: Vector3) -> void:
@@ -60,3 +72,13 @@ func _do_enter(seed: int, red: bool, return_pos: Vector3) -> void:
GameState.dungeon_red = red
GameState.portal_return_position = return_pos
GameState.change_scene(GameState.SCENE_DUNGEON)
@rpc("any_peer", "reliable", "call_local")
func _request_return() -> void:
if not multiplayer.is_server() and multiplayer.multiplayer_peer != null:
return
_do_return.rpc()
@rpc("authority", "reliable", "call_local")
func _do_return() -> void:
GameState.change_scene(GameState.SCENE_WORLD)