4 @onready var _screen: SplitScreenContainer = $SplitScreenContainer
6 var _player_wall_tscn = preload("res://player/player_wall.tscn")
7 var _player_wall_map = {}
8 var _player_color_map = {}
12 "left": "player1_left",
13 "right": "player1_right",
14 "restart": "player1_restart"
17 "left": "player2_left",
18 "right": "player2_right",
19 "restart": "player2_restart"
23 func _ready() -> void:
24 var players: Array[Player] = [$Player1, $Player2]
26 _screen.set_splitscreen(players)
28 for player in players:
29 player.set_input_map(_input_map.pop_front())
30 _player_color_map[player] = player.color
31 _player_add_wall(player)
34 func _input(event: InputEvent) -> void:
35 if event.is_action_pressed("ui_cancel"):
39 func _process(_delta: float) -> void:
40 for player: Player in _player_wall_map.keys():
41 var wall: PlayerWall = _player_wall_map[player]
42 wall.scale = Vector3(1, 1, (player.global_position - wall.global_position).length())
45 func _player_add_wall(player: Player) -> void:
46 var wall: PlayerWall = _player_wall_tscn.instantiate()
48 # start new wall from origin position
50 wall.set_color(_player_color_map[player])
51 wall.global_position = player.global_position
52 wall.global_rotation = player.global_rotation
54 _player_wall_map[player] = wall
57 func _on_player_destroyed(player: Player) -> void:
58 print("Player \"" + player.name + "\" destroyed")
61 func _on_player_player_restart(player: Player) -> void:
62 print("Player \"" + player.name + "\" wants to restart")
63 get_tree().reload_current_scene()