No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MiniGame.gd 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. extends Node
  2. signal game_over
  3. onready var foreground := $foreground
  4. onready var background := $background
  5. onready var spawner := $spawner
  6. onready var player := $player
  7. onready var scoreUI := $scoreUI
  8. onready var start_timer_UI := $startTimerUI
  9. onready var instructionsUI := $instructionsUI
  10. onready var score_timer := $ScoreTimer
  11. onready var speed_timer := $SpeedTimer
  12. var next_timeline_lose := ""
  13. var next_timeline_win := ""
  14. var game_mode = ""
  15. var game_goal = 10
  16. var current_goal = 0
  17. var game_difficulty = "easy"
  18. var game_version = 0
  19. var MUSIC = "res://music/mini_jeu.ogg"
  20. var game_speed = 0 setget set_game_speed
  21. export var speed_increments := 0.1
  22. export var max_speed := 8
  23. func _ready():
  24. pass
  25. func setup(mode: String, goal: int, difficulty: String, next_lose: String, next_win: String, version: int):
  26. game_goal = goal
  27. if(difficulty == "hard"):
  28. game_difficulty = "hard"
  29. else:
  30. game_difficulty = "easy"
  31. game_version = version
  32. print("setup minigame: " + mode + " " + next_lose + " " + next_win + " | version: " + String(version))
  33. set_mode(mode)
  34. background.init(game_version)
  35. foreground.init(game_speed, game_version)
  36. spawner.init(game_difficulty, game_version)
  37. scoreUI.init(mode, goal)
  38. next_timeline_lose = next_lose
  39. next_timeline_win = next_win
  40. func set_mode(mode: String):
  41. match mode:
  42. "score":
  43. game_mode = "score"
  44. "time":
  45. game_mode = "time"
  46. _:
  47. print("unkonwn mini-game mode")
  48. func start():
  49. print("starting minigame")
  50. BackgroundMusic.crossfade_to(MUSIC, -10, 1)
  51. start_timer_UI.init()
  52. var t = Timer.new()
  53. t.wait_time = 0.5
  54. t.autostart = true
  55. add_child(t)
  56. for n in range(3,0,-1):
  57. start_timer_UI.update_timer(n)
  58. yield(t, "timeout")
  59. start_timer_UI.update_timer(0)
  60. instructionsUI.start()
  61. foreground.start()
  62. player.start()
  63. yield(t, "timeout")
  64. yield(t, "timeout")
  65. start_timer_UI.hide()
  66. spawner.start()
  67. if game_mode == "score":
  68. scoreUI.start(0)
  69. else:
  70. scoreUI.start(game_goal)
  71. t.queue_free()
  72. if game_mode == "time":
  73. score_timer.start()
  74. speed_timer.start()
  75. func stop():
  76. foreground.stop()
  77. instructionsUI.stop()
  78. player.stop()
  79. spawner.stop()
  80. score_timer.stop()
  81. speed_timer.stop()
  82. func on_win():
  83. stop()
  84. emit_signal("game_over", next_timeline_win)
  85. func on_game_over():
  86. stop()
  87. emit_signal("game_over", next_timeline_lose)
  88. func _on_player_die() -> void:
  89. on_game_over()
  90. func _on_player_hit() -> void:
  91. pass
  92. func update_score():
  93. current_goal += 1
  94. scoreUI.update_score(current_goal)
  95. if current_goal >= game_goal:
  96. on_win()
  97. func set_game_speed(new_value: float):
  98. game_speed = new_value
  99. if game_speed > max_speed:
  100. game_speed = max_speed
  101. foreground.speed_offset = game_speed
  102. spawner.speed_offset = game_speed
  103. func _on_player_score() -> void:
  104. update_score()
  105. func _on_ScoreTimer_timeout() -> void:
  106. update_score()
  107. func _on_SpeedTimer_timeout() -> void:
  108. set_game_speed(game_speed + speed_increments)