]> Untitled Git - lightcycles.git/blob - map/world.gd
32f1a7c72379da5ad56613204eb1f2e52e667334
[lightcycles.git] / map / world.gd
1 extends Node3D
2
3
4 @onready var _screen: SplitScreenContainer = $SplitScreenContainer
5
6 var _player_wall_tscn = preload("res://player/player_wall.tscn")
7 var _player_wall_map = {}
8
9 var _input_map = [
10         {
11                 "left": "player1_left",
12                 "right": "player1_right",
13                 "restart": "player1_restart"
14         },
15         {
16                 "left": "player2_left",
17                 "right": "player2_right",
18                 "restart": "player2_restart"
19         }
20 ]
21
22 func _ready() -> void:
23         var players: Array[Player] = [$Player1, $Player2]
24         
25         _screen.set_splitscreen(players)
26         
27         for player in players:
28                 _player_add_wall(player)
29                 player.set_input_map(_input_map.pop_front())
30
31
32 func _input(event: InputEvent) -> void:
33         if event.is_action_pressed("ui_cancel"):
34                 get_tree().quit()
35
36
37 func _process(_delta: float) -> void:
38         for player: Player in _player_wall_map.keys():
39                 var wall: PlayerWall = _player_wall_map[player]
40                 wall.scale = Vector3(1, 1, (player.global_position - wall.global_position).length())
41
42
43 func _player_add_wall(player: Player) -> void:
44         var wall: PlayerWall = _player_wall_tscn.instantiate()
45         
46         # start new wall from origin position
47         add_child(wall)
48         wall.global_position = player.global_position
49         wall.global_rotation = player.global_rotation
50         
51         _player_wall_map[player] = wall
52
53
54 func _on_player_destroyed(player: Player) -> void:
55         print("Player \"" + player.name + "\" destroyed")
56
57
58 func _on_player_player_restart(player: Player) -> void:
59         print("Player \"" + player.name + "\" wants to restart")
60         get_tree().reload_current_scene()