]> Untitled Git - lightcycles.git/blobdiff - map/world.gd
Renabled collision for vehicles by putting vehicle and environment on different mask...
[lightcycles.git] / map / world.gd
index 3b0e36b113477884db48731dabfb5f50f314a77c..6429a3c3df3f1d0a4610e3b2020b8dc1cd80fdc3 100644 (file)
@@ -1,28 +1,63 @@
 extends Node3D
 
 extends Node3D
 
-@onready var _walls = $map
+
+@onready var _screen: SplitScreenContainer = $SplitScreenContainer
 
 var _player_wall_tscn = preload("res://player/player_wall.tscn")
 
 var _player_wall_tscn = preload("res://player/player_wall.tscn")
-var _wall_start: Vector3 = Vector3.ZERO
+var _player_wall_map = {}
+var _player_color_map = {}
+
+var _input_map = [
+       {
+               "left": "player1_left",
+               "right": "player1_right",
+               "restart": "player1_restart"
+       },
+       {
+               "left": "player2_left",
+               "right": "player2_right",
+               "restart": "player2_restart"
+       }
+]
+
+func _ready() -> void:
+       var players: Array[Player] = [$Player1, $Player2]
+       
+       _screen.set_splitscreen(players)
+       
+       for player in players:
+               player.set_input_map(_input_map.pop_front())
+               _player_color_map[player] = player.color
+               _player_add_wall(player)
+
 
 func _input(event: InputEvent) -> void:
        if event.is_action_pressed("ui_cancel"):
                get_tree().quit()
 
 
 
 func _input(event: InputEvent) -> void:
        if event.is_action_pressed("ui_cancel"):
                get_tree().quit()
 
 
-func _on_player_player_ready(player: Player) -> void:
-       var origin: Vector3 = player.get_tree().get_first_node_in_group("wall_origin").global_position
-       _wall_start = origin
+func _process(_delta: float) -> void:
+       for player: Player in _player_wall_map.keys():
+               var wall: PlayerWall = _player_wall_map[player]
+               wall.scale = Vector3(1, 1, (player.global_position - wall.global_position).length())
 
 
 
 
-func _on_player_player_turn(player: Player) -> void:
-       var origin: Vector3 = player.global_position
-       
+func _player_add_wall(player: Player) -> void:
        var wall: PlayerWall = _player_wall_tscn.instantiate()
        var wall: PlayerWall = _player_wall_tscn.instantiate()
+       
+       # start new wall from origin position
        add_child(wall)
        add_child(wall)
-       wall.global_position = _wall_start
-       wall.global_scale(Vector3(1, 1, (origin - _wall_start).length()))
+       wall.set_color(_player_color_map[player])
+       wall.global_position = player.global_position
        wall.global_rotation = player.global_rotation
        wall.global_rotation = player.global_rotation
-       print("Made a wall: " + str(wall))
        
        
-       _wall_start = origin
+       _player_wall_map[player] = wall
+
+
+func _on_player_destroyed(player: Player) -> void:
+       print("Player \"" + player.name + "\" destroyed")
+
+
+func _on_player_player_restart(player: Player) -> void:
+       print("Player \"" + player.name + "\" wants to restart")
+       get_tree().reload_current_scene()