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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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. current_goal = 0
  28. if(difficulty == "hard"):
  29. game_difficulty = "hard"
  30. else:
  31. game_difficulty = "easy"
  32. game_version = version
  33. print("setup minigame: " + mode + " " + next_lose + " " + next_win + " | version: " + String(version))
  34. set_mode(mode)
  35. background.init(game_version)
  36. foreground.init(game_speed, game_version)
  37. spawner.init(game_difficulty, game_version)
  38. scoreUI.init(mode, goal)
  39. next_timeline_lose = next_lose
  40. next_timeline_win = next_win
  41. func set_mode(mode: String):
  42. match mode:
  43. "score":
  44. game_mode = "score"
  45. "time":
  46. game_mode = "time"
  47. _:
  48. print("unkonwn mini-game mode")
  49. func start():
  50. print("starting minigame")
  51. BackgroundMusic.crossfade_to(MUSIC, -10, 1)
  52. start_timer_UI.init()
  53. var t = Timer.new()
  54. t.wait_time = 0.5
  55. t.autostart = true
  56. add_child(t)
  57. for n in range(3,0,-1):
  58. start_timer_UI.update_timer(n)
  59. yield(t, "timeout")
  60. start_timer_UI.update_timer(0)
  61. instructionsUI.start()
  62. foreground.start()
  63. player.start()
  64. yield(t, "timeout")
  65. yield(t, "timeout")
  66. start_timer_UI.hide()
  67. spawner.start()
  68. if game_mode == "score":
  69. scoreUI.start(0)
  70. else:
  71. scoreUI.start(game_goal)
  72. t.queue_free()
  73. if game_mode == "time":
  74. score_timer.start()
  75. speed_timer.start()
  76. func stop():
  77. foreground.stop()
  78. instructionsUI.stop()
  79. player.stop()
  80. spawner.stop()
  81. score_timer.stop()
  82. speed_timer.stop()
  83. func on_win():
  84. stop()
  85. emit_signal("game_over", next_timeline_win)
  86. func on_game_over():
  87. stop()
  88. emit_signal("game_over", next_timeline_lose)
  89. func _on_player_die() -> void:
  90. on_game_over()
  91. func _on_player_hit() -> void:
  92. pass
  93. func update_score():
  94. current_goal += 1
  95. scoreUI.update_score(current_goal)
  96. if current_goal >= game_goal:
  97. on_win()
  98. func set_game_speed(new_value: float):
  99. game_speed = new_value
  100. if game_speed > max_speed:
  101. game_speed = max_speed
  102. foreground.speed_offset = game_speed
  103. spawner.speed_offset = game_speed
  104. func _on_player_score() -> void:
  105. update_score()
  106. func _on_ScoreTimer_timeout() -> void:
  107. update_score()
  108. func _on_SpeedTimer_timeout() -> void:
  109. set_game_speed(game_speed + speed_increments)