progressively increase game speed

This commit is contained in:
Arnaud Vergnet 2021-05-06 11:03:04 +02:00
parent 51341019b2
commit ce56d3e2f6
6 changed files with 62 additions and 9 deletions

View file

@ -8,7 +8,8 @@ onready var player := $player
onready var scoreUI := $scoreUI onready var scoreUI := $scoreUI
onready var start_timer_UI := $startTimerUI onready var start_timer_UI := $startTimerUI
onready var instructionsUI := $instructionsUI onready var instructionsUI := $instructionsUI
onready var timer := $Timer onready var score_timer := $ScoreTimer
onready var speed_timer := $SpeedTimer
var next_timeline_lose := "" var next_timeline_lose := ""
var next_timeline_win := "" var next_timeline_win := ""
@ -21,6 +22,10 @@ var game_version = 0
var MUSIC = "res://music/mini_jeu.ogg" var MUSIC = "res://music/mini_jeu.ogg"
var game_speed = 0 setget set_game_speed
export var speed_increments := 0.1
export var max_speed := 8
func _ready(): func _ready():
pass pass
@ -30,11 +35,14 @@ func setup(mode: String, goal: int, difficulty: String, next_lose: String, next_
game_goal = goal game_goal = goal
if(difficulty == "hard"): if(difficulty == "hard"):
game_difficulty = "hard" game_difficulty = "hard"
game_speed = 2
else: else:
game_difficulty = "easy" game_difficulty = "easy"
game_version = version game_version = version
print("setup minigame: " + mode + " " + next_lose + " " + next_win) print("setup minigame: " + mode + " " + next_lose + " " + next_win)
set_mode(mode) set_mode(mode)
foreground.init(game_speed)
spawner.init(game_speed)
scoreUI.init(mode, goal) scoreUI.init(mode, goal)
next_timeline_lose = next_lose next_timeline_lose = next_lose
next_timeline_win = next_win next_timeline_win = next_win
@ -75,14 +83,16 @@ func start():
scoreUI.start(game_goal) scoreUI.start(game_goal)
t.queue_free() t.queue_free()
if game_mode == "time": if game_mode == "time":
timer.start() score_timer.start()
speed_timer.start()
func stop(): func stop():
foreground.stop() foreground.stop()
player.stop() player.stop()
spawner.stop() spawner.stop()
timer.stop() score_timer.stop()
speed_timer.stop()
func on_win(): func on_win():
@ -102,6 +112,7 @@ func _on_player_die() -> void:
func _on_player_hit() -> void: func _on_player_hit() -> void:
pass pass
func update_score(): func update_score():
current_goal += 1 current_goal += 1
scoreUI.update_score(current_goal) scoreUI.update_score(current_goal)
@ -109,9 +120,21 @@ func update_score():
on_win() on_win()
func set_game_speed(new_value: float):
game_speed = new_value
if game_speed > max_speed:
game_speed = max_speed
foreground.speed_offset = game_speed
spawner.speed_offset = game_speed
func _on_player_score() -> void: func _on_player_score() -> void:
update_score() update_score()
func _on_Timer_timeout() -> void: func _on_ScoreTimer_timeout() -> void:
update_score() update_score()
func _on_SpeedTimer_timeout() -> void:
set_game_speed(game_speed + speed_increments)

View file

@ -28,9 +28,12 @@ position = Vector2( 183.674, 888.367 )
[node name="instructionsUI" parent="." instance=ExtResource( 8 )] [node name="instructionsUI" parent="." instance=ExtResource( 8 )]
[node name="Timer" type="Timer" parent="."] [node name="ScoreTimer" type="Timer" parent="."]
[node name="SpeedTimer" type="Timer" parent="."]
[connection signal="die" from="player" to="." method="_on_player_die"] [connection signal="die" from="player" to="." method="_on_player_die"]
[connection signal="hit" from="player" to="." method="_on_player_hit"] [connection signal="hit" from="player" to="." method="_on_player_hit"]
[connection signal="score" from="player" to="." method="_on_player_score"] [connection signal="score" from="player" to="." method="_on_player_score"]
[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] [connection signal="timeout" from="ScoreTimer" to="." method="_on_ScoreTimer_timeout"]
[connection signal="timeout" from="SpeedTimer" to="." method="_on_SpeedTimer_timeout"]

View file

@ -2,6 +2,7 @@ extends Sprite
export var scroll_speed = 9 export var scroll_speed = 9
var speed_offset : float = 0
var moving = false var moving = false
signal viewport_entered(object) signal viewport_entered(object)
@ -22,7 +23,7 @@ func _physics_process(delta):
func move(): func move():
position.x -= scroll_speed position.x -= scroll_speed + speed_offset
func _on_VisibilityNotifier2D_viewport_entered(viewport: Viewport) -> void: func _on_VisibilityNotifier2D_viewport_entered(viewport: Viewport) -> void:

View file

@ -5,11 +5,23 @@ var sprite_scene = preload("res://mini-game/scenes/decor/ForegroundSprite.tscn")
var textures := [] var textures := []
var moving := false var moving := false
var speed_offset : float = 0 setget set_speed_offset
func _ready(): func _ready():
textures.append($ForegroundSprite) textures.append($ForegroundSprite)
stop() stop()
func init(speed: float):
set_speed_offset(speed)
func set_speed_offset(new_value: float):
speed_offset = new_value
for t in textures:
t.speed_offset = speed_offset
func stop(): func stop():
moving = false moving = false
for t in textures: for t in textures:
@ -25,6 +37,7 @@ func start():
func _on_ForegroundSprite_viewport_entered(object: Sprite) -> void: func _on_ForegroundSprite_viewport_entered(object: Sprite) -> void:
var new_sprite = sprite_scene.instance() var new_sprite = sprite_scene.instance()
new_sprite.position = Vector2(1920, 0) new_sprite.position = Vector2(1920, 0)
new_sprite.speed_offset = speed_offset
new_sprite.connect("viewport_entered", self, "_on_ForegroundSprite_viewport_entered") new_sprite.connect("viewport_entered", self, "_on_ForegroundSprite_viewport_entered")
new_sprite.connect("viewport_exited", self, "_on_ForegroundSprite_viewport_exited") new_sprite.connect("viewport_exited", self, "_on_ForegroundSprite_viewport_exited")
if moving: if moving:

View file

@ -3,6 +3,7 @@ extends Node2D
export var sprite_texture : Texture export var sprite_texture : Texture
export var type := "bonus" setget , get_type export var type := "bonus" setget , get_type
export var scroll_speed = 9 export var scroll_speed = 9
var speed_offset : float = 0
onready var sprite = $Sprite onready var sprite = $Sprite
onready var audio_stream = $AudioStreamPlayer onready var audio_stream = $AudioStreamPlayer
@ -32,7 +33,7 @@ func get_type():
func move(): func move():
self.position.x -= scroll_speed self.position.x -= scroll_speed + speed_offset
func pickup(): func pickup():

View file

@ -9,11 +9,22 @@ var end_of_game = false
var timer_speed = 0.99 var timer_speed = 0.99
var random_threshold = 50 var random_threshold = 50
var scenes_offset = 0 var scenes_offset = 0
var speed_offset : float = 0 setget set_speed_offset
onready var timer := $Timer onready var timer := $Timer
onready var items := $items onready var items := $items
func init(speed: float):
set_speed_offset(speed)
func set_speed_offset(new_value: float):
speed_offset = new_value
for obj in items.get_children():
obj.speed_offset = speed_offset
func _on_Timer_timeout(): func _on_Timer_timeout():
random_scene.randomize() random_scene.randomize()
scene_index = random_scene.randi_range(1,100) scene_index = random_scene.randi_range(1,100)
@ -22,6 +33,7 @@ func _on_Timer_timeout():
else: else:
scene_index = 0 scene_index = 0
var tmp = scenes[scene_index+scenes_offset*2].instance() var tmp = scenes[scene_index+scenes_offset*2].instance()
tmp.speed_offset = speed_offset
items.add_child(tmp) items.add_child(tmp)
last_object = tmp last_object = tmp
if(timer.wait_time <= 1): if(timer.wait_time <= 1):
@ -46,6 +58,6 @@ func start(difficulty, version):
func stop(): func stop():
timer.stop() timer.stop()
for obj in $items.get_children(): for obj in items.get_children():
remove_child(obj) remove_child(obj)
obj.queue_free() obj.queue_free()