diff --git a/mini-game/MiniGame.gd b/mini-game/MiniGame.gd index f60e519..cebfd1e 100644 --- a/mini-game/MiniGame.gd +++ b/mini-game/MiniGame.gd @@ -8,7 +8,8 @@ onready var player := $player onready var scoreUI := $scoreUI onready var start_timer_UI := $startTimerUI 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_win := "" @@ -21,6 +22,10 @@ var game_version = 0 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(): pass @@ -30,11 +35,14 @@ func setup(mode: String, goal: int, difficulty: String, next_lose: String, next_ game_goal = goal if(difficulty == "hard"): game_difficulty = "hard" + game_speed = 2 else: game_difficulty = "easy" game_version = version print("setup minigame: " + mode + " " + next_lose + " " + next_win) set_mode(mode) + foreground.init(game_speed) + spawner.init(game_speed) scoreUI.init(mode, goal) next_timeline_lose = next_lose next_timeline_win = next_win @@ -75,14 +83,16 @@ func start(): scoreUI.start(game_goal) t.queue_free() if game_mode == "time": - timer.start() + score_timer.start() + speed_timer.start() func stop(): foreground.stop() player.stop() spawner.stop() - timer.stop() + score_timer.stop() + speed_timer.stop() func on_win(): @@ -102,6 +112,7 @@ func _on_player_die() -> void: func _on_player_hit() -> void: pass + func update_score(): current_goal += 1 scoreUI.update_score(current_goal) @@ -109,9 +120,21 @@ func update_score(): 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: update_score() -func _on_Timer_timeout() -> void: +func _on_ScoreTimer_timeout() -> void: update_score() + + +func _on_SpeedTimer_timeout() -> void: + set_game_speed(game_speed + speed_increments) diff --git a/mini-game/MiniGame.tscn b/mini-game/MiniGame.tscn index d4e13f0..67b8af6 100644 --- a/mini-game/MiniGame.tscn +++ b/mini-game/MiniGame.tscn @@ -28,9 +28,12 @@ position = Vector2( 183.674, 888.367 ) [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="hit" from="player" to="." method="_on_player_hit"] [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"] diff --git a/mini-game/scenes/decor/ForegroundSprite.gd b/mini-game/scenes/decor/ForegroundSprite.gd index 0a5ca44..6b621f6 100644 --- a/mini-game/scenes/decor/ForegroundSprite.gd +++ b/mini-game/scenes/decor/ForegroundSprite.gd @@ -2,6 +2,7 @@ extends Sprite export var scroll_speed = 9 +var speed_offset : float = 0 var moving = false signal viewport_entered(object) @@ -22,7 +23,7 @@ func _physics_process(delta): func move(): - position.x -= scroll_speed + position.x -= scroll_speed + speed_offset func _on_VisibilityNotifier2D_viewport_entered(viewport: Viewport) -> void: diff --git a/mini-game/scenes/decor/foreground.gd b/mini-game/scenes/decor/foreground.gd index 17534f3..b098367 100644 --- a/mini-game/scenes/decor/foreground.gd +++ b/mini-game/scenes/decor/foreground.gd @@ -5,11 +5,23 @@ var sprite_scene = preload("res://mini-game/scenes/decor/ForegroundSprite.tscn") var textures := [] var moving := false +var speed_offset : float = 0 setget set_speed_offset + func _ready(): textures.append($ForegroundSprite) 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(): moving = false for t in textures: @@ -25,6 +37,7 @@ func start(): func _on_ForegroundSprite_viewport_entered(object: Sprite) -> void: var new_sprite = sprite_scene.instance() 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_exited", self, "_on_ForegroundSprite_viewport_exited") if moving: diff --git a/mini-game/scenes/spawner/pickup.gd b/mini-game/scenes/spawner/pickup.gd index 2d9608c..9152b6b 100644 --- a/mini-game/scenes/spawner/pickup.gd +++ b/mini-game/scenes/spawner/pickup.gd @@ -3,6 +3,7 @@ extends Node2D export var sprite_texture : Texture export var type := "bonus" setget , get_type export var scroll_speed = 9 +var speed_offset : float = 0 onready var sprite = $Sprite onready var audio_stream = $AudioStreamPlayer @@ -32,7 +33,7 @@ func get_type(): func move(): - self.position.x -= scroll_speed + self.position.x -= scroll_speed + speed_offset func pickup(): diff --git a/mini-game/scenes/spawner/spawner.gd b/mini-game/scenes/spawner/spawner.gd index 48dd6d4..9c5f760 100644 --- a/mini-game/scenes/spawner/spawner.gd +++ b/mini-game/scenes/spawner/spawner.gd @@ -9,11 +9,22 @@ var end_of_game = false var timer_speed = 0.99 var random_threshold = 50 var scenes_offset = 0 +var speed_offset : float = 0 setget set_speed_offset onready var timer := $Timer 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(): random_scene.randomize() scene_index = random_scene.randi_range(1,100) @@ -22,6 +33,7 @@ func _on_Timer_timeout(): else: scene_index = 0 var tmp = scenes[scene_index+scenes_offset*2].instance() + tmp.speed_offset = speed_offset items.add_child(tmp) last_object = tmp if(timer.wait_time <= 1): @@ -46,6 +58,6 @@ func start(difficulty, version): func stop(): timer.stop() - for obj in $items.get_children(): + for obj in items.get_children(): remove_child(obj) obj.queue_free()