X-Git-Url: http://git.purplebirdman.com/lightcycles.git/blobdiff_plain/3e15374f814e7b21fc895b09ed77ef983f392a93..f0a8b4b6ed5b689dc505fe5a6266bef9a649057d:/map/world.gd diff --git a/map/world.gd b/map/world.gd index 3b0e36b..6429a3c 100644 --- a/map/world.gd +++ b/map/world.gd @@ -1,28 +1,63 @@ extends Node3D -@onready var _walls = $map + +@onready var _screen: SplitScreenContainer = $SplitScreenContainer 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 _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() + + # start new wall from origin position 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 - 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()