minigame mode and restart option added

This commit is contained in:
Nabzzz 2021-04-11 18:09:08 +02:00
parent e14eb9eb1d
commit 2434d7371c
10 changed files with 118 additions and 22 deletions

View file

@ -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"}}

View file

@ -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"}}

View file

@ -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"}}

View file

@ -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)

View file

@ -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 )]

View file

@ -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()

View file

@ -3,3 +3,7 @@ extends Node2D
signal die
signal gain
signal update_score
signal update_timer
signal win

View file

@ -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

View file

@ -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():

View file

@ -8,7 +8,8 @@ func _ready():
dialogic_node = Dialogic.add_as_child_of($Control)
$Control.move_child(dialogic_node, 0)
dialogic_node.connect('dialogic_signal', self, "_on_Dialogic_signal_received")
dialogic_node.start_from_save("_start")
#dialogic_node.start_from_save("_start")
dialogic_node.start("_start")
func _on_Dialogic_signal_received(value: String):
@ -21,15 +22,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():