diff --git a/dialogic/timelines/timeline-1616659306.json b/dialogic/timelines/timeline-1616659306.json index b6ac879..73db1f1 100644 --- a/dialogic/timelines/timeline-1616659306.json +++ b/dialogic/timelines/timeline-1616659306.json @@ -1 +1 @@ -{"events":[{"change_timeline":"timeline-1616656510.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616659306.json","name":"_start"}} +{"events":[{"change_timeline":"timeline-1617871263.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1616659306.json","name":"_start"}} diff --git a/dialogic/timelines/timeline-1617871263.json b/dialogic/timelines/timeline-1617871263.json index 6cb7a2a..85366f8 100644 --- a/dialogic/timelines/timeline-1617871263.json +++ b/dialogic/timelines/timeline-1617871263.json @@ -1 +1 @@ -{"events":[{"background":"res://backgrounds/bureauGroupe-2.jpg"},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"Hello"},{"emit_signal":"setup_minigame mode _test_minigame_end"},{"background":""},{"character":"character-1616658373.json","portrait":"","text":"I explain stuff"},{"emit_signal":"start_minigame"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1617871263.json","name":"_test_minigame_start"}} +{"events":[{"background":"res://backgrounds/bureauGroupe-2.jpg"},{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":true,"2":false,"3":false,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"Hello"},{"emit_signal":"setup_minigame score _test_minigame_end _test_minigame_end2"},{"background":""},{"character":"character-1616658373.json","portrait":"","text":"I explain stuff"},{"emit_signal":"start_minigame"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1617871263.json","name":"_test_minigame_start"}} diff --git a/dialogic/timelines/timeline-1617874348.json b/dialogic/timelines/timeline-1617874348.json index 0ed1524..4f6b275 100644 --- a/dialogic/timelines/timeline-1617874348.json +++ b/dialogic/timelines/timeline-1617874348.json @@ -1 +1 @@ -{"events":[{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"you lost"},{"change_timeline":"timeline-1616661658.json"}],"metadata":{"dialogic-version":"1.1","file":"timeline-1617874348.json","name":"_test_minigame_end"}} +{"events":[{"action":"join","character":"character-1616658373.json","portrait":"","position":{"0":false,"1":false,"2":false,"3":true,"4":false}},{"character":"character-1616658373.json","portrait":"","text":"you lost"},{"options":[],"question":"Tu veux réessayer?"},{"choice":"Oui !"},{"emit_signal":"setup_minigame score _test_minigame_end _test_minigame_end2"},{"background":""},{"emit_signal":"start_minigame"},{"choice":"Non"},{"change_timeline":"timeline-1616661658.json"},{"endbranch":""}],"metadata":{"dialogic-version":"1.1","file":"timeline-1617874348.json","name":"_test_minigame_end"}} diff --git a/mini-game/MiniGame.gd b/mini-game/MiniGame.gd index 0088ceb..f96799b 100644 --- a/mini-game/MiniGame.gd +++ b/mini-game/MiniGame.gd @@ -7,31 +7,56 @@ onready var foreground := $foreground onready var spawner := $spawner onready var player := $player2 onready var scoreUI := $scoreUI +onready var start_timer_UI := $start_timer_UI +onready var instructionsUI := $instructionsUI + +var next_timeline_lose := "" +var next_timeline_win := "" + +var game_mode = "" -var next_timeline := "" func _ready(): Signals.connect("die", self, "on_game_over") + Signals.connect("win", self, "on_win") -func setup(mode: String, next: String): - print("minigame: " + mode + " " + next) +func setup(mode: String, next_lose: String, next_win: String): + print("minigame: " + mode + " " + next_lose + " " + next_win) set_mode(mode) - scoreUI.init() - next_timeline = next + scoreUI.init(mode) + next_timeline_lose = next_lose + next_timeline_win = next_win func set_mode(mode: String): match mode: + "score": + game_mode = "score" + "time": + game_mode = "time" _: print("unkonwn mini-game mode") func start(): print("starting minigame") + start_timer_UI.init() + var t = Timer.new() + t.set_wait_time(1) + add_child(t) + t.start() + for n in range(3,0,-1): + start_timer_UI.update_timer(String(n)) + yield(t, "timeout") + start_timer_UI.update_timer("GO !") foreground.start() - player.start() + player.start(game_mode) spawner.start() + instructionsUI._init() + scoreUI.start(game_mode) + yield(t, "timeout") + start_timer_UI.hide() func stop(): @@ -40,7 +65,10 @@ func stop(): spawner.stop() +func on_win(): + stop() + emit_signal("game_over", next_timeline_win) func on_game_over(): stop() - emit_signal("game_over", next_timeline) + emit_signal("game_over", next_timeline_lose) diff --git a/mini-game/MiniGame.tscn b/mini-game/MiniGame.tscn index 703d6b9..83763d2 100644 --- a/mini-game/MiniGame.tscn +++ b/mini-game/MiniGame.tscn @@ -1,11 +1,13 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=9 format=2] [ext_resource path="res://mini-game/scenes/decor/background.tscn" type="PackedScene" id=1] [ext_resource path="res://mini-game/scenes/decor/foreground.tscn" type="PackedScene" id=2] [ext_resource path="res://mini-game/scenes/players/player2.tscn" type="PackedScene" id=3] [ext_resource path="res://mini-game/MiniGame.gd" type="Script" id=4] +[ext_resource path="res://mini-game/scenes/decor/start_timer_UI.tscn" type="PackedScene" id=5] [ext_resource path="res://mini-game/scenes/spawner/spawner.tscn" type="PackedScene" id=6] [ext_resource path="res://mini-game/scenes/decor/scoreUI.tscn" type="PackedScene" id=7] +[ext_resource path="res://mini-game/scenes/decor/instructionsUI.tscn" type="PackedScene" id=8] [node name="MiniGame" type="Node"] script = ExtResource( 4 ) @@ -21,3 +23,7 @@ position = Vector2( 2015.43, 970.395 ) position = Vector2( 183.674, 888.367 ) [node name="scoreUI" parent="." instance=ExtResource( 7 )] + +[node name="start_timer_UI" parent="." instance=ExtResource( 5 )] + +[node name="instructionsUI" parent="." instance=ExtResource( 8 )] diff --git a/mini-game/scenes/decor/scoreUI.gd b/mini-game/scenes/decor/scoreUI.gd index d9cb447..6f8e21a 100644 --- a/mini-game/scenes/decor/scoreUI.gd +++ b/mini-game/scenes/decor/scoreUI.gd @@ -2,13 +2,40 @@ extends Control onready var label : Label = $MarginContainer/Label +var game_mode +var max_time = 3 + func _ready(): Signals.connect("update_score",self,"update_score") func update_score(score: int): label.text = String(score) - -func init(): - update_score(0) +func start(mode: String): + + match mode: + "score": + update_score(0) + show() + "time": + update_score(max_time) + show() + var t = Timer.new() + t.set_wait_time(1) + add_child(t) + t.start() + for n in range(max_time,0,-1): + update_score(n) + yield(t,"timeout") + update_score(0) + Signals.emit_signal("win") + _: + print("game_mode not recognized by scoreUI") + + + +func init(mode): + game_mode = mode + hide() + diff --git a/mini-game/scripts/Signals.gd b/mini-game/scripts/Signals.gd index 4aeb420..0a81dbb 100644 --- a/mini-game/scripts/Signals.gd +++ b/mini-game/scripts/Signals.gd @@ -3,3 +3,7 @@ extends Node2D signal die signal gain signal update_score +signal update_timer +signal win + + diff --git a/mini-game/scripts/player2.gd b/mini-game/scripts/player2.gd index dffc392..78e7d02 100644 --- a/mini-game/scripts/player2.gd +++ b/mini-game/scripts/player2.gd @@ -3,6 +3,7 @@ extends KinematicBody2D var vitesse = Vector2.ZERO var score = 0 +var score_goal = 10 export var jump_vitesse = 600.0 export var gravite = 20.0 @@ -13,7 +14,13 @@ enum { IDLE } -var player_enabled = false; +enum { + SCORE, + TIME +} + +var player_enabled = false +var game_mode = "score" var state = RUN var au_sol = true @@ -62,16 +69,37 @@ func _on_Area2D_body_exited(body): func increase_score(scoretoadd): - score+=scoretoadd - Signals.emit_signal("update_score",score) + match game_mode: + "score": + score+=scoretoadd + Signals.emit_signal("update_score",score) + if score >= score_goal: + Signals.emit_signal("win") + "time": + pass + _: + print("game_mode not recognized by player2 start func") + + + +func player_win(): + stop() func player_die(): stop() -func start(): +func start(mode: String): show() + match mode: + "score": + game_mode = "score" + "time": + game_mode = "time" + _: + print("game_mode not recognized by player2 start func") + score = 0 player_enabled = true diff --git a/mini-game/scripts/spawner.gd b/mini-game/scripts/spawner.gd index 2a87d72..817772d 100644 --- a/mini-game/scripts/spawner.gd +++ b/mini-game/scripts/spawner.gd @@ -12,6 +12,7 @@ var spawner_enabled = false func _ready(): Signals.connect("die",self,"game_over") + Signals.connect("win",self,"game_over") func _on_Timer_timeout(): @@ -32,6 +33,7 @@ func game_over(): func start(): spawner_enabled = true + self.get_node("Timer").set_paused(false) func stop(): diff --git a/scenes/Main.gd b/scenes/Main.gd index 24df3b0..ce1ff82 100644 --- a/scenes/Main.gd +++ b/scenes/Main.gd @@ -20,15 +20,15 @@ func _on_Dialogic_signal_received(value: String): start_minigame() "setup_minigame": if (args.size() >= 3): - setup_minigame(args[1], args[2]) + setup_minigame(args[1], args[2], args[3]) else: print("not enough arguments for start_minigame") _: print("wrong type") -func setup_minigame(mode: String, next_timeline: String): - mini_game.setup(mode, next_timeline) +func setup_minigame(mode: String, next_timeline_lose: String, next_timeline_win): + mini_game.setup(mode, next_timeline_lose, next_timeline_win) func start_minigame():