Game.gd 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. extends Node2D
  2. onready var cam = $MainCamera
  3. var levelNames = ["res://Levels/Lab.tscn", "res://Levels/Square.tscn"]
  4. var levelScenes = []
  5. var levelCurrentNode
  6. var levelIndex = -1
  7. var playerScene = preload("res://Player.tscn")
  8. var playerActionsLeft = ["p1_left", "p2_left", "p3_left"]
  9. var playerActionsRight = ["p1_right", "p2_right", "p3_right"]
  10. func _ready():
  11. for k in range(levelNames.size()):
  12. levelScenes.append(null)
  13. func _unhandled_input(event):
  14. if event.is_action("ui_accept") and event.is_pressed():
  15. if get_tree().has_group("living"):
  16. var living = get_tree().get_nodes_in_group("living")
  17. if !living.empty():
  18. return
  19. start()
  20. func start():
  21. # Clear if required
  22. if (get_tree().has_group("players")):
  23. var players = get_tree().get_nodes_in_group("players")
  24. for p in players:
  25. p.queue_free()
  26. if (levelCurrentNode):
  27. remove_child(levelCurrentNode)
  28. levelCurrentNode.queue_free()
  29. # Select level
  30. levelIndex += 1
  31. if (levelIndex >= levelScenes.size()):
  32. levelIndex = 0
  33. if !levelScenes[levelIndex]:
  34. levelScenes[levelIndex] = load(levelNames[levelIndex])
  35. # Load level
  36. levelCurrentNode = levelScenes[levelIndex].instance()
  37. add_child(levelCurrentNode)
  38. # Retrieve player spawn points
  39. var spawners = get_tree().get_nodes_in_group("spawn")
  40. # Create players
  41. var player
  42. for k in 3:
  43. player = playerScene.instance()
  44. player.grid = levelCurrentNode
  45. player.turn_left_action = playerActionsLeft[k]
  46. player.turn_right_action = playerActionsRight[k]
  47. player.position = spawners[k].position
  48. add_child(player)
  49. # TODO Timer
  50. get_tree().call_group("players", "_on_game_start")