From d28716d3466e6d7c4ae381419fd8e8ad41656041 Mon Sep 17 00:00:00 2001 From: Arnaud Vergnet Date: Wed, 5 May 2021 18:33:03 +0200 Subject: [PATCH] refactor minigame --- mini-game/MiniGame.gd | 50 ++++++-- mini-game/MiniGame.tscn | 17 ++- mini-game/scenes/bonuses/bonus1.tscn | 26 +--- mini-game/scenes/bonuses/bonus2.tscn | 26 +--- mini-game/scenes/bonuses/bonus3.tscn | 27 +---- mini-game/scenes/bonuses/bonus4.tscn | 27 +---- mini-game/scenes/bonuses/bonus5.tscn | 30 +---- mini-game/scenes/decor/scoreUI.gd | 47 +------- mini-game/scenes/decor/scoreUI.tscn | 4 - mini-game/scenes/decor/startTimerUI.gd | 20 ++++ ...{start_timer_UI.tscn => startTimerUI.tscn} | 4 +- mini-game/scenes/decor/start_timer_UI.gd | 18 --- mini-game/scenes/effets/ScrollingBG.tscn | 28 ----- .../scenes/effets/collision_obstacle.tscn | 3 - mini-game/scenes/effets/pick_bonus.tscn | 3 - mini-game/scenes/obstacles/obstacle1.tscn | 25 +--- mini-game/scenes/obstacles/obstacle2.tscn | 27 +---- mini-game/scenes/obstacles/obstacle3.tscn | 26 +--- mini-game/scenes/obstacles/obstacle4.tscn | 26 +--- mini-game/scenes/obstacles/obstacle5.tscn | 29 +---- mini-game/scenes/players/player.gd | 93 +++++++++++++++ .../players/{player2.tscn => player.tscn} | 8 +- mini-game/scenes/players/player1.tscn | 6 - mini-game/scenes/spawner/pickup.gd | 42 +++++++ mini-game/scenes/spawner/pickup.tscn | 24 ++++ mini-game/scenes/spawner/spawner.gd | 51 ++++++++ mini-game/scenes/spawner/spawner.tscn | 3 +- mini-game/scripts/ScrollingBG.gd | 19 --- mini-game/scripts/Signals.gd | 9 -- mini-game/scripts/bonus1.gd | 20 ---- mini-game/scripts/obstacle1.gd | 22 ---- mini-game/scripts/player1.gd | 16 --- mini-game/scripts/player2.gd | 111 ------------------ mini-game/scripts/scroll_movement.gd | 14 --- mini-game/scripts/spawner.gd | 64 ---------- 35 files changed, 336 insertions(+), 629 deletions(-) create mode 100644 mini-game/scenes/decor/startTimerUI.gd rename mini-game/scenes/decor/{start_timer_UI.tscn => startTimerUI.tscn} (84%) delete mode 100644 mini-game/scenes/decor/start_timer_UI.gd delete mode 100644 mini-game/scenes/effets/ScrollingBG.tscn delete mode 100644 mini-game/scenes/effets/collision_obstacle.tscn delete mode 100644 mini-game/scenes/effets/pick_bonus.tscn create mode 100644 mini-game/scenes/players/player.gd rename mini-game/scenes/players/{player2.tscn => player.tscn} (94%) delete mode 100644 mini-game/scenes/players/player1.tscn create mode 100644 mini-game/scenes/spawner/pickup.gd create mode 100644 mini-game/scenes/spawner/pickup.tscn create mode 100644 mini-game/scenes/spawner/spawner.gd delete mode 100644 mini-game/scripts/ScrollingBG.gd delete mode 100644 mini-game/scripts/Signals.gd delete mode 100644 mini-game/scripts/bonus1.gd delete mode 100644 mini-game/scripts/obstacle1.gd delete mode 100644 mini-game/scripts/player1.gd delete mode 100644 mini-game/scripts/player2.gd delete mode 100644 mini-game/scripts/scroll_movement.gd delete mode 100644 mini-game/scripts/spawner.gd diff --git a/mini-game/MiniGame.gd b/mini-game/MiniGame.gd index 0810272..cbbc826 100644 --- a/mini-game/MiniGame.gd +++ b/mini-game/MiniGame.gd @@ -4,16 +4,18 @@ signal game_over onready var foreground := $foreground onready var spawner := $spawner -onready var player := $player2 +onready var player := $player onready var scoreUI := $scoreUI -onready var start_timer_UI := $start_timer_UI +onready var start_timer_UI := $startTimerUI onready var instructionsUI := $instructionsUI +onready var timer := $Timer var next_timeline_lose := "" var next_timeline_win := "" var game_mode = "" var game_goal = 10 +var current_goal = 0 var game_difficulty = "easy" var game_version = 0 @@ -21,8 +23,7 @@ var MUSIC = "res://music/mini_jeu.ogg" func _ready(): - Signals.connect("die", self, "on_game_over") - Signals.connect("win", self, "on_win") + pass func setup(mode: String, goal: int, difficulty: String, next_lose: String, next_win: String, version: int): @@ -34,7 +35,7 @@ func setup(mode: String, goal: int, difficulty: String, next_lose: String, next_ game_version = version print("setup minigame: " + mode + " " + next_lose + " " + next_win) set_mode(mode) - scoreUI.init(mode, game_goal) + scoreUI.init(mode) next_timeline_lose = next_lose next_timeline_win = next_win @@ -58,25 +59,30 @@ func start(): add_child(t) t.start() for n in range(3,0,-1): - start_timer_UI.update_timer(String(n)) + start_timer_UI.update_timer(n) yield(t, "timeout") - start_timer_UI.update_timer("GO !") + start_timer_UI.update_timer(0) instructionsUI._init() foreground.start() - player.start(game_mode, game_goal) + player.start() yield(t, "timeout") yield(t, "timeout") start_timer_UI.hide() spawner.start(game_difficulty, game_version) - scoreUI.start(game_mode) + if game_mode == "score": + scoreUI.start(0) + else: + scoreUI.start(game_goal) t.queue_free() + if game_mode == "time": + timer.start() func stop(): foreground.stop() player.stop() spawner.stop() - scoreUI.stop() + timer.stop() func on_win(): @@ -87,3 +93,27 @@ func on_win(): func on_game_over(): stop() emit_signal("game_over", next_timeline_lose) + + +func _on_player_die() -> void: + on_game_over() + + +func _on_player_hit() -> void: + pass + + +func _on_player_score() -> void: + if game_mode == "score": + current_goal += 1 + scoreUI.update_score(current_goal) + if current_goal >= game_goal: + on_win() + + +func _on_Timer_timeout() -> void: + if game_mode == "time": + current_goal += 1 + scoreUI.update_score(game_goal - current_goal) + if current_goal >= game_goal: + on_win() diff --git a/mini-game/MiniGame.tscn b/mini-game/MiniGame.tscn index a7d9853..d4e13f0 100644 --- a/mini-game/MiniGame.tscn +++ b/mini-game/MiniGame.tscn @@ -2,9 +2,9 @@ [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/scenes/players/player.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/decor/startTimerUI.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] @@ -19,13 +19,18 @@ script = ExtResource( 4 ) [node name="spawner" parent="." instance=ExtResource( 6 )] position = Vector2( 2015.43, 970.395 ) -[node name="player2" parent="." instance=ExtResource( 3 )] +[node name="player" parent="." instance=ExtResource( 3 )] position = Vector2( 183.674, 888.367 ) -jump_vitesse = 1100.0 -gravite = 45.0 [node name="scoreUI" parent="." instance=ExtResource( 7 )] -[node name="start_timer_UI" parent="." instance=ExtResource( 5 )] +[node name="startTimerUI" parent="." instance=ExtResource( 5 )] [node name="instructionsUI" parent="." instance=ExtResource( 8 )] + +[node name="Timer" 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"] diff --git a/mini-game/scenes/bonuses/bonus1.tscn b/mini-game/scenes/bonuses/bonus1.tscn index 9e542de..710a754 100644 --- a/mini-game/scenes/bonuses/bonus1.tscn +++ b/mini-game/scenes/bonuses/bonus1.tscn @@ -1,24 +1,8 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=3 format=2] -[ext_resource path="res://mini-game/scripts/bonus1.gd" type="Script" id=1] +[ext_resource path="res://mini-game/scenes/spawner/pickup.tscn" type="PackedScene" id=1] [ext_resource path="res://mini-game/ressources/sprites/bonus/bone.png" type="Texture" id=2] -[ext_resource path="res://mini-game/scenes/effets/pick_bonus.tscn" type="PackedScene" id=3] -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 24.0183, 9.31512 ) - -[node name="bonus1" type="Node2D"] -script = ExtResource( 1 ) - -[node name="Sprite" type="Sprite" parent="."] -scale = Vector2( 0.119644, 0.119644 ) -texture = ExtResource( 2 ) - -[node name="pick_bonus" parent="." instance=ExtResource( 3 )] - -[node name="CollisionShape2D" type="CollisionShape2D" parent="pick_bonus"] -shape = SubResource( 1 ) - -[node name="notifier" type="VisibilityNotifier2D" parent="."] - -[connection signal="body_entered" from="pick_bonus" to="." method="_on_pick_bonus_body_entered"] +[node name="bonus1" instance=ExtResource( 1 )] +sprite_texture = ExtResource( 2 ) +type = "bonus" diff --git a/mini-game/scenes/bonuses/bonus2.tscn b/mini-game/scenes/bonuses/bonus2.tscn index 36bcf86..13de058 100644 --- a/mini-game/scenes/bonuses/bonus2.tscn +++ b/mini-game/scenes/bonuses/bonus2.tscn @@ -1,24 +1,8 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=3 format=2] -[ext_resource path="res://mini-game/scripts/bonus1.gd" type="Script" id=1] +[ext_resource path="res://mini-game/scenes/spawner/pickup.tscn" type="PackedScene" id=1] [ext_resource path="res://mini-game/ressources/sprites/bonus/bonus_enveloppe.png" type="Texture" id=2] -[ext_resource path="res://mini-game/scenes/effets/pick_bonus.tscn" type="PackedScene" id=3] -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 51.3758, 37.234 ) - -[node name="bonus2" type="Node2D"] -script = ExtResource( 1 ) - -[node name="Sprite" type="Sprite" parent="."] -scale = Vector2( 0.2, 0.2 ) -texture = ExtResource( 2 ) - -[node name="pick_bonus" parent="." instance=ExtResource( 3 )] - -[node name="CollisionShape2D" type="CollisionShape2D" parent="pick_bonus"] -position = Vector2( -0.625, 0 ) -shape = SubResource( 1 ) - -[node name="notifier" type="VisibilityNotifier2D" parent="."] -[connection signal="body_entered" from="pick_bonus" to="." method="_on_pick_bonus_body_entered"] +[node name="bonus1" instance=ExtResource( 1 )] +sprite_texture = ExtResource( 2 ) +type = "bonus" diff --git a/mini-game/scenes/bonuses/bonus3.tscn b/mini-game/scenes/bonuses/bonus3.tscn index fe7e3c5..0036c6c 100644 --- a/mini-game/scenes/bonuses/bonus3.tscn +++ b/mini-game/scenes/bonuses/bonus3.tscn @@ -1,25 +1,8 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=3 format=2] -[ext_resource path="res://mini-game/scripts/bonus1.gd" type="Script" id=1] +[ext_resource path="res://mini-game/scenes/spawner/pickup.tscn" type="PackedScene" id=1] [ext_resource path="res://mini-game/ressources/sprites/bonus/oreille.png" type="Texture" id=2] -[ext_resource path="res://mini-game/scenes/effets/pick_bonus.tscn" type="PackedScene" id=3] -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 44.6127, 47.0458 ) - -[node name="bonus3" type="Node2D"] -script = ExtResource( 1 ) - -[node name="Sprite" type="Sprite" parent="."] -position = Vector2( 0.627587, -14.6332 ) -scale = Vector2( 0.101666, 0.101666 ) -texture = ExtResource( 2 ) - -[node name="pick_bonus" parent="." instance=ExtResource( 3 )] - -[node name="CollisionShape2D" type="CollisionShape2D" parent="pick_bonus"] -position = Vector2( 1.00113, -11.3461 ) -shape = SubResource( 1 ) - -[node name="notifier" type="VisibilityNotifier2D" parent="."] -[connection signal="body_entered" from="pick_bonus" to="." method="_on_pick_bonus_body_entered"] +[node name="bonus3" instance=ExtResource( 1 )] +sprite_texture = ExtResource( 2 ) +type = "bonus" diff --git a/mini-game/scenes/bonuses/bonus4.tscn b/mini-game/scenes/bonuses/bonus4.tscn index a88ab56..21d4fcc 100644 --- a/mini-game/scenes/bonuses/bonus4.tscn +++ b/mini-game/scenes/bonuses/bonus4.tscn @@ -1,25 +1,8 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=3 format=2] -[ext_resource path="res://mini-game/scripts/bonus1.gd" type="Script" id=1] +[ext_resource path="res://mini-game/scenes/spawner/pickup.tscn" type="PackedScene" id=1] [ext_resource path="res://mini-game/ressources/sprites/bonus/telephonebrillant.png" type="Texture" id=2] -[ext_resource path="res://mini-game/scenes/effets/pick_bonus.tscn" type="PackedScene" id=3] -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 25.9386, 54.0271 ) - -[node name="bonus4" type="Node2D"] -script = ExtResource( 1 ) - -[node name="Sprite" type="Sprite" parent="."] -position = Vector2( -0.453356, -18.8551 ) -scale = Vector2( 0.0729584, 0.0729585 ) -texture = ExtResource( 2 ) - -[node name="pick_bonus" parent="." instance=ExtResource( 3 )] - -[node name="CollisionShape2D" type="CollisionShape2D" parent="pick_bonus"] -position = Vector2( -0.594162, -14.2551 ) -shape = SubResource( 1 ) - -[node name="notifier" type="VisibilityNotifier2D" parent="."] -[connection signal="body_entered" from="pick_bonus" to="." method="_on_pick_bonus_body_entered"] +[node name="bonus4" instance=ExtResource( 1 )] +sprite_texture = ExtResource( 2 ) +type = "bonus" diff --git a/mini-game/scenes/bonuses/bonus5.tscn b/mini-game/scenes/bonuses/bonus5.tscn index 6caebda..5fdb843 100644 --- a/mini-game/scenes/bonuses/bonus5.tscn +++ b/mini-game/scenes/bonuses/bonus5.tscn @@ -1,28 +1,8 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=3 format=2] -[ext_resource path="res://mini-game/scripts/bonus1.gd" type="Script" id=1] +[ext_resource path="res://mini-game/scenes/spawner/pickup.tscn" type="PackedScene" id=1] [ext_resource path="res://mini-game/ressources/sprites/bonus/peinture.png" type="Texture" id=2] -[ext_resource path="res://mini-game/scenes/effets/pick_bonus.tscn" type="PackedScene" id=3] -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 30.5774, 94.4143 ) - -[node name="bonus5" type="Node2D"] -script = ExtResource( 1 ) -__meta__ = { -"_edit_horizontal_guides_": [ -97.9765 ] -} - -[node name="Sprite" type="Sprite" parent="."] -position = Vector2( 0.0226159, -21.252 ) -scale = Vector2( 0.101622, 0.101622 ) -texture = ExtResource( 2 ) - -[node name="pick_bonus" parent="." instance=ExtResource( 3 )] - -[node name="CollisionShape2D" type="CollisionShape2D" parent="pick_bonus"] -position = Vector2( -0.759476, -7.68111 ) -shape = SubResource( 1 ) - -[node name="notifier" type="VisibilityNotifier2D" parent="."] -[connection signal="body_entered" from="pick_bonus" to="." method="_on_pick_bonus_body_entered"] +[node name="bonus5" instance=ExtResource( 1 )] +sprite_texture = ExtResource( 2 ) +type = "bonus" diff --git a/mini-game/scenes/decor/scoreUI.gd b/mini-game/scenes/decor/scoreUI.gd index 23879e5..b67e445 100644 --- a/mini-game/scenes/decor/scoreUI.gd +++ b/mini-game/scenes/decor/scoreUI.gd @@ -1,55 +1,18 @@ extends Control -onready var label : Label = $MarginContainer/Label -onready var timer = $Timer +onready var label := $MarginContainer/Label var game_mode -var max_time = 30 -var current_time = 0 - -func _ready(): - Signals.connect("update_score",self,"update_score") - func update_score(score: int): label.text = String(score) -func start(mode: String): - match mode: - "score": - update_score(0) - show() - "time": - update_score(max_time) - show() - current_time = 0 - timer.start() - _: - print("game_mode not recognized by scoreUI") +func start(initial_score: int): + update_score(initial_score) + show() -func set_max_time(time: int): - max_time = time - -func init(mode, goal: int): +func init(mode: String): game_mode = mode - if (goal != 0): - max_time = goal hide() - - -func stop(): - timer.stop() - - -func _on_Timer_timeout() -> void: - current_time += 1 - var n = max_time - current_time - if n < 0: - n = 0 - update_score(n) - if n == 0: - Signals.emit_signal("win") - timer.stop() - diff --git a/mini-game/scenes/decor/scoreUI.tscn b/mini-game/scenes/decor/scoreUI.tscn index 5fd04d0..6aa81d7 100644 --- a/mini-game/scenes/decor/scoreUI.tscn +++ b/mini-game/scenes/decor/scoreUI.tscn @@ -39,7 +39,3 @@ align = 1 __meta__ = { "_edit_use_anchors_": false } - -[node name="Timer" type="Timer" parent="."] - -[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] diff --git a/mini-game/scenes/decor/startTimerUI.gd b/mini-game/scenes/decor/startTimerUI.gd new file mode 100644 index 0000000..26dfdb4 --- /dev/null +++ b/mini-game/scenes/decor/startTimerUI.gd @@ -0,0 +1,20 @@ +extends Control + + +onready var label : Label = $MarginContainer/Label + +func _ready(): + hide() + + +func update_timer(score: int): + if score > 0: + label.text = String(score) + else: + label.text = "GO !" + + +func init(): + update_timer(3) + show() + diff --git a/mini-game/scenes/decor/start_timer_UI.tscn b/mini-game/scenes/decor/startTimerUI.tscn similarity index 84% rename from mini-game/scenes/decor/start_timer_UI.tscn rename to mini-game/scenes/decor/startTimerUI.tscn index 3e5e0df..b167d9f 100644 --- a/mini-game/scenes/decor/start_timer_UI.tscn +++ b/mini-game/scenes/decor/startTimerUI.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=2] [ext_resource path="res://mini-game/ressources/font/joystix/ot/joystix monospace.otf" type="DynamicFontData" id=1] -[ext_resource path="res://mini-game/scenes/decor/start_timer_UI.gd" type="Script" id=2] +[ext_resource path="res://mini-game/scenes/decor/startTimerUI.gd" type="Script" id=2] [sub_resource type="DynamicFont" id=1] size = 200 @@ -9,7 +9,7 @@ outline_size = 20 outline_color = Color( 0, 0, 0, 1 ) font_data = ExtResource( 1 ) -[node name="start_timer_UI" type="Control"] +[node name="startTimerUI" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 margin_right = 0.00012207 diff --git a/mini-game/scenes/decor/start_timer_UI.gd b/mini-game/scenes/decor/start_timer_UI.gd deleted file mode 100644 index 328eca7..0000000 --- a/mini-game/scenes/decor/start_timer_UI.gd +++ /dev/null @@ -1,18 +0,0 @@ -extends Control - - -onready var label : Label = $MarginContainer/Label - -func _ready(): - Signals.connect("update_timer",self,"update_timer") - hide() - - -func update_timer(score: String): - label.text = score - - -func init(): - update_timer(String(3)) - show() - diff --git a/mini-game/scenes/effets/ScrollingBG.tscn b/mini-game/scenes/effets/ScrollingBG.tscn deleted file mode 100644 index fbbd14d..0000000 --- a/mini-game/scenes/effets/ScrollingBG.tscn +++ /dev/null @@ -1,28 +0,0 @@ -[gd_scene load_steps=4 format=2] - -[ext_resource path="res://mini-game/scripts/ScrollingBG.gd" type="Script" id=1] - -[sub_resource type="Shader" id=1] -code = "shader_type canvas_item; - -uniform float scroll_speed; - -void fragment(){ - vec2 u = UV; - u.x += scroll_speed*TIME; - vec4 color = texture(TEXTURE,u); - COLOR = color; -} -" - -[sub_resource type="ShaderMaterial" id=2] -shader = SubResource( 1 ) -shader_param/scroll_speed = 0.2 - -[node name="ScrollingBG" type="TextureRect"] -material = SubResource( 2 ) -stretch_mode = 2 -script = ExtResource( 1 ) -__meta__ = { -"_edit_use_anchors_": false -} diff --git a/mini-game/scenes/effets/collision_obstacle.tscn b/mini-game/scenes/effets/collision_obstacle.tscn deleted file mode 100644 index 25285a3..0000000 --- a/mini-game/scenes/effets/collision_obstacle.tscn +++ /dev/null @@ -1,3 +0,0 @@ -[gd_scene format=2] - -[node name="collision_obstacle" type="Area2D"] diff --git a/mini-game/scenes/effets/pick_bonus.tscn b/mini-game/scenes/effets/pick_bonus.tscn deleted file mode 100644 index 79abbb1..0000000 --- a/mini-game/scenes/effets/pick_bonus.tscn +++ /dev/null @@ -1,3 +0,0 @@ -[gd_scene format=2] - -[node name="pick_bonus" type="Area2D"] diff --git a/mini-game/scenes/obstacles/obstacle1.tscn b/mini-game/scenes/obstacles/obstacle1.tscn index 6c92c1d..66aa83f 100644 --- a/mini-game/scenes/obstacles/obstacle1.tscn +++ b/mini-game/scenes/obstacles/obstacle1.tscn @@ -1,24 +1,5 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=2 format=2] -[ext_resource path="res://mini-game/scripts/obstacle1.gd" type="Script" id=1] -[ext_resource path="res://mini-game/ressources/sprites/obstacle/barrel.png" type="Texture" id=2] -[ext_resource path="res://mini-game/scenes/effets/collision_obstacle.tscn" type="PackedScene" id=3] +[ext_resource path="res://mini-game/scenes/spawner/pickup.tscn" type="PackedScene" id=1] -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 28.3542, 36.1379 ) - -[node name="obstacle1" type="Node2D"] -script = ExtResource( 1 ) - -[node name="Sprite" type="Sprite" parent="."] -scale = Vector2( 0.202437, 0.202437 ) -texture = ExtResource( 2 ) - -[node name="collision_obstacle" parent="." instance=ExtResource( 3 )] - -[node name="CollisionShape2D" type="CollisionShape2D" parent="collision_obstacle"] -shape = SubResource( 1 ) - -[node name="notifier" type="VisibilityNotifier2D" parent="."] - -[connection signal="body_entered" from="collision_obstacle" to="." method="_on_collision_obstacle_body_entered"] +[node name="obstacle2" instance=ExtResource( 1 )] diff --git a/mini-game/scenes/obstacles/obstacle2.tscn b/mini-game/scenes/obstacles/obstacle2.tscn index 0079286..19c079d 100644 --- a/mini-game/scenes/obstacles/obstacle2.tscn +++ b/mini-game/scenes/obstacles/obstacle2.tscn @@ -1,26 +1,7 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=3 format=2] -[ext_resource path="res://mini-game/scripts/obstacle1.gd" type="Script" id=1] +[ext_resource path="res://mini-game/scenes/spawner/pickup.tscn" type="PackedScene" id=1] [ext_resource path="res://mini-game/ressources/sprites/obstacle/malus_enveloppe.png" type="Texture" id=2] -[ext_resource path="res://mini-game/scenes/effets/collision_obstacle.tscn" type="PackedScene" id=3] -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 46.8347, 33.7529 ) - -[node name="obstacle2" type="Node2D"] -script = ExtResource( 1 ) - -[node name="Sprite" type="Sprite" parent="."] -position = Vector2( -0.0556164, -0.166861 ) -scale = Vector2( 0.2, 0.2 ) -texture = ExtResource( 2 ) - -[node name="collision_obstacle" parent="." instance=ExtResource( 3 )] - -[node name="CollisionShape2D" type="CollisionShape2D" parent="collision_obstacle"] -shape = SubResource( 1 ) - -[node name="notifier" type="VisibilityNotifier2D" parent="."] -position = Vector2( -0.333708, -0.333708 ) -scale = Vector2( 4.70418, 3.36934 ) -[connection signal="body_entered" from="collision_obstacle" to="." method="_on_collision_obstacle_body_entered"] +[node name="obstacle2" instance=ExtResource( 1 )] +sprite_texture = ExtResource( 2 ) diff --git a/mini-game/scenes/obstacles/obstacle3.tscn b/mini-game/scenes/obstacles/obstacle3.tscn index ca8b795..0bbd5bf 100644 --- a/mini-game/scenes/obstacles/obstacle3.tscn +++ b/mini-game/scenes/obstacles/obstacle3.tscn @@ -1,25 +1,7 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=3 format=2] -[ext_resource path="res://mini-game/scripts/obstacle1.gd" type="Script" id=1] +[ext_resource path="res://mini-game/scenes/spawner/pickup.tscn" type="PackedScene" id=1] [ext_resource path="res://mini-game/ressources/sprites/obstacle/telephoneconference.png" type="Texture" id=2] -[ext_resource path="res://mini-game/scenes/effets/collision_obstacle.tscn" type="PackedScene" id=3] -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 25.3346, 58.4363 ) - -[node name="obstacle3" type="Node2D"] -script = ExtResource( 1 ) - -[node name="Sprite" type="Sprite" parent="."] -position = Vector2( 1.45743, -10.024 ) -scale = Vector2( 0.0703989, 0.0703989 ) -texture = ExtResource( 2 ) - -[node name="collision_obstacle" parent="." instance=ExtResource( 3 )] - -[node name="CollisionShape2D" type="CollisionShape2D" parent="collision_obstacle"] -position = Vector2( -1.33633, 0 ) -shape = SubResource( 1 ) - -[node name="notifier" type="VisibilityNotifier2D" parent="."] -[connection signal="body_entered" from="collision_obstacle" to="." method="_on_collision_obstacle_body_entered"] +[node name="obstacle3" instance=ExtResource( 1 )] +sprite_texture = ExtResource( 2 ) diff --git a/mini-game/scenes/obstacles/obstacle4.tscn b/mini-game/scenes/obstacles/obstacle4.tscn index a2fa343..5bb1802 100644 --- a/mini-game/scenes/obstacles/obstacle4.tscn +++ b/mini-game/scenes/obstacles/obstacle4.tscn @@ -1,25 +1,7 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=3 format=2] -[ext_resource path="res://mini-game/scripts/obstacle1.gd" type="Script" id=1] +[ext_resource path="res://mini-game/scenes/spawner/pickup.tscn" type="PackedScene" id=1] [ext_resource path="res://mini-game/ressources/sprites/obstacle/telephoneflamme.png" type="Texture" id=2] -[ext_resource path="res://mini-game/scenes/effets/collision_obstacle.tscn" type="PackedScene" id=3] -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 24.4662, 65.2837 ) - -[node name="obstacle4" type="Node2D"] -script = ExtResource( 1 ) - -[node name="Sprite" type="Sprite" parent="."] -position = Vector2( 0.832382, -16.9321 ) -scale = Vector2( 0.0711866, 0.0711866 ) -texture = ExtResource( 2 ) - -[node name="collision_obstacle" parent="." instance=ExtResource( 3 )] - -[node name="CollisionShape2D" type="CollisionShape2D" parent="collision_obstacle"] -position = Vector2( 1.08099, -1.5749 ) -shape = SubResource( 1 ) - -[node name="notifier" type="VisibilityNotifier2D" parent="."] -[connection signal="body_entered" from="collision_obstacle" to="." method="_on_collision_obstacle_body_entered"] +[node name="obstacle4" instance=ExtResource( 1 )] +sprite_texture = ExtResource( 2 ) diff --git a/mini-game/scenes/obstacles/obstacle5.tscn b/mini-game/scenes/obstacles/obstacle5.tscn index a12032a..7ca8967 100644 --- a/mini-game/scenes/obstacles/obstacle5.tscn +++ b/mini-game/scenes/obstacles/obstacle5.tscn @@ -1,28 +1,7 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=3 format=2] -[ext_resource path="res://mini-game/scripts/obstacle1.gd" type="Script" id=1] +[ext_resource path="res://mini-game/scenes/spawner/pickup.tscn" type="PackedScene" id=1] [ext_resource path="res://mini-game/ressources/sprites/obstacle/dessin.png" type="Texture" id=2] -[ext_resource path="res://mini-game/scenes/effets/collision_obstacle.tscn" type="PackedScene" id=3] -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 25.9509, 82.5121 ) - -[node name="obstacle5" type="Node2D"] -script = ExtResource( 1 ) -__meta__ = { -"_edit_horizontal_guides_": [ ] -} - -[node name="Sprite" type="Sprite" parent="."] -position = Vector2( -0.582159, -32.5956 ) -scale = Vector2( 0.073, 0.073 ) -texture = ExtResource( 2 ) - -[node name="collision_obstacle" parent="." instance=ExtResource( 3 )] - -[node name="CollisionShape2D" type="CollisionShape2D" parent="collision_obstacle"] -position = Vector2( -1.05112, 3.99426 ) -shape = SubResource( 1 ) - -[node name="notifier" type="VisibilityNotifier2D" parent="."] -[connection signal="body_entered" from="collision_obstacle" to="." method="_on_collision_obstacle_body_entered"] +[node name="obstacle5" instance=ExtResource( 1 )] +sprite_texture = ExtResource( 2 ) diff --git a/mini-game/scenes/players/player.gd b/mini-game/scenes/players/player.gd new file mode 100644 index 0000000..83f908b --- /dev/null +++ b/mini-game/scenes/players/player.gd @@ -0,0 +1,93 @@ +extends KinematicBody2D + +var speed = Vector2.ZERO + +export var jump_speed = 1100.0 +export var gravity = 45.0 +export var max_lives = 1 + +enum { + RUN, + JUMP, + IDLE +} + +enum { + SCORE, + TIME +} + +var jump_key = "dialogic_next" + +var player_enabled = false + +var state = RUN +var au_sol = true + +var current_lives = max_lives + +onready var animation = $AnimatedSprite + +signal hit() +signal die() +signal score() + +func _ready(): + stop() + + +func _physics_process(delta): + if player_enabled: + match state: + RUN: + animation.play("man_run") + JUMP: + speed = Vector2.ZERO + speed.y -= jump_speed + animation.play("man_jump") + state = IDLE + IDLE: + pass + speed.y += gravity + move_and_collide(speed*delta) + + +func _input(event): + if player_enabled and state == RUN and event.is_action_pressed(jump_key): + state = JUMP + + +func _on_Area2D_body_entered(body): + if body is StaticBody2D: + state = RUN + + +func _on_Area2D_body_exited(body): + if body is StaticBody2D: + state = JUMP + + +func start(): + show() + player_enabled = true + + +func stop(): + hide() + player_enabled = false + + +func hit(): + print("hit") + current_lives -= 1 + if current_lives > 0: + emit_signal("hit") + else: + current_lives = 0 + emit_signal("die") + + +func bonus(): + print("bonus") + emit_signal("score") + diff --git a/mini-game/scenes/players/player2.tscn b/mini-game/scenes/players/player.tscn similarity index 94% rename from mini-game/scenes/players/player2.tscn rename to mini-game/scenes/players/player.tscn index f52927b..fd971e0 100644 --- a/mini-game/scenes/players/player2.tscn +++ b/mini-game/scenes/players/player.tscn @@ -5,7 +5,7 @@ [ext_resource path="res://mini-game/ressources/sprites/player/dino/dino_run6.png" type="Texture" id=3] [ext_resource path="res://mini-game/ressources/sprites/player/dino/dino_run3.png" type="Texture" id=4] [ext_resource path="res://mini-game/ressources/sprites/player/dino/dino_jump2.png" type="Texture" id=5] -[ext_resource path="res://mini-game/scripts/player2.gd" type="Script" id=6] +[ext_resource path="res://mini-game/scenes/players/player.gd" type="Script" id=6] [ext_resource path="res://mini-game/ressources/sprites/player/dino/dino_run0.png" type="Texture" id=7] [ext_resource path="res://mini-game/ressources/sprites/player/dino/dino_run4.png" type="Texture" id=8] [ext_resource path="res://mini-game/ressources/sprites/player/dino/dino_run2.png" type="Texture" id=9] @@ -51,11 +51,9 @@ extents = Vector2( 4.46927, 10.285 ) [sub_resource type="RectangleShape2D" id=3] extents = Vector2( 7.82863, 6.33675 ) -[node name="player2" type="KinematicBody2D"] +[node name="player" type="KinematicBody2D"] scale = Vector2( 10, 10 ) script = ExtResource( 6 ) -jump_vitesse = 1000.0 -gravite = 40.0 [node name="AnimatedSprite" type="AnimatedSprite" parent="."] position = Vector2( -1.76303, -0.98938 ) @@ -64,7 +62,7 @@ frames = SubResource( 1 ) animation = "man_jump" [node name="CollisionShape2D" type="CollisionShape2D" parent="."] -position = Vector2( -0.0396851, -0.480505 ) +position = Vector2( -0.0396847, -0.480505 ) shape = SubResource( 2 ) [node name="Area2D" type="Area2D" parent="."] diff --git a/mini-game/scenes/players/player1.tscn b/mini-game/scenes/players/player1.tscn deleted file mode 100644 index 2924149..0000000 --- a/mini-game/scenes/players/player1.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://mini-game/scripts/player1.gd" type="Script" id=1] - -[node name="player1" type="Node2D"] -script = ExtResource( 1 ) diff --git a/mini-game/scenes/spawner/pickup.gd b/mini-game/scenes/spawner/pickup.gd new file mode 100644 index 0000000..a03a4a0 --- /dev/null +++ b/mini-game/scenes/spawner/pickup.gd @@ -0,0 +1,42 @@ +extends Node2D + +export var sprite_texture : Texture +export var type := "bonus" setget , get_type +export var scroll_speed = 9 + +onready var sprite = $Sprite +onready var notifier = $notifier + + +func _ready(): + sprite.texture = sprite_texture + notifier.connect("screen_exited", self, "_on_screen_exited") + + +func _on_screen_exited(): + queue_free() + + +func _physics_process(delta): + move() + + +func get_type(): + return type + + +func move(): + self.position.x -= scroll_speed + + +func pickup(): + queue_free() + + +func _on_Area2D_body_entered(body: Node) -> void: + if body.has_method("bonus") and body.has_method("hit"): + pickup() + if type == "bonus": + body.bonus() + elif type == "malus": + body.hit() diff --git a/mini-game/scenes/spawner/pickup.tscn b/mini-game/scenes/spawner/pickup.tscn new file mode 100644 index 0000000..e841c6a --- /dev/null +++ b/mini-game/scenes/spawner/pickup.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://mini-game/ressources/sprites/obstacle/barrel.png" type="Texture" id=1] +[ext_resource path="res://mini-game/scenes/spawner/pickup.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 28.3542, 36.1379 ) + +[node name="pickup" type="Node2D"] +script = ExtResource( 2 ) +sprite_texture = ExtResource( 1 ) +type = "malus" + +[node name="Sprite" type="Sprite" parent="."] +scale = Vector2( 0.202437, 0.202437 ) + +[node name="Area2D" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource( 1 ) + +[node name="notifier" type="VisibilityNotifier2D" parent="."] + +[connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"] diff --git a/mini-game/scenes/spawner/spawner.gd b/mini-game/scenes/spawner/spawner.gd new file mode 100644 index 0000000..48dd6d4 --- /dev/null +++ b/mini-game/scenes/spawner/spawner.gd @@ -0,0 +1,51 @@ +extends Node2D + +export (Array,PackedScene) var scenes + +var random_scene = RandomNumberGenerator.new() +var scene_index = 0; +var last_object +var end_of_game = false +var timer_speed = 0.99 +var random_threshold = 50 +var scenes_offset = 0 + +onready var timer := $Timer +onready var items := $items + + +func _on_Timer_timeout(): + random_scene.randomize() + scene_index = random_scene.randi_range(1,100) + if(scene_index >= random_threshold): + scene_index = 1 + else: + scene_index = 0 + var tmp = scenes[scene_index+scenes_offset*2].instance() + items.add_child(tmp) + last_object = tmp + if(timer.wait_time <= 1): + timer.wait_time = 1 + else: + timer.wait_time *= timer_speed + + +func start(difficulty, version): + match difficulty: + "easy": + timer_speed = 0.99 + random_threshold = 50 + "hard": + timer_speed = 0.95 + random_threshold = 33 + _: + pass + scenes_offset = version + timer.start() + + +func stop(): + timer.stop() + for obj in $items.get_children(): + remove_child(obj) + obj.queue_free() diff --git a/mini-game/scenes/spawner/spawner.tscn b/mini-game/scenes/spawner/spawner.tscn index 4d90891..11d13e5 100644 --- a/mini-game/scenes/spawner/spawner.tscn +++ b/mini-game/scenes/spawner/spawner.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=12 format=2] -[ext_resource path="res://mini-game/scripts/spawner.gd" type="Script" id=1] +[ext_resource path="res://mini-game/scenes/spawner/spawner.gd" type="Script" id=1] [ext_resource path="res://mini-game/scenes/obstacles/obstacle1.tscn" type="PackedScene" id=2] [ext_resource path="res://mini-game/scenes/bonuses/bonus1.tscn" type="PackedScene" id=3] [ext_resource path="res://mini-game/scenes/bonuses/bonus2.tscn" type="PackedScene" id=4] @@ -18,7 +18,6 @@ scenes = [ ExtResource( 3 ), ExtResource( 2 ), ExtResource( 4 ), ExtResource( 5 [node name="Timer" type="Timer" parent="."] wait_time = 2.094 -autostart = true [node name="items" type="Node2D" parent="."] diff --git a/mini-game/scripts/ScrollingBG.gd b/mini-game/scripts/ScrollingBG.gd deleted file mode 100644 index c02a677..0000000 --- a/mini-game/scripts/ScrollingBG.gd +++ /dev/null @@ -1,19 +0,0 @@ -extends TextureRect - - -# Declare member variables here. Examples: -# var a = 2 -# var b = "text" - - -# Called when the node enters the scene tree for the first time. - -func _ready(): - Signals.connect("die",self,"game_over") - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass -func game_over(): - material.set_shader_param("scroll_speed",0) diff --git a/mini-game/scripts/Signals.gd b/mini-game/scripts/Signals.gd deleted file mode 100644 index 0a81dbb..0000000 --- a/mini-game/scripts/Signals.gd +++ /dev/null @@ -1,9 +0,0 @@ -extends Node2D - -signal die -signal gain -signal update_score -signal update_timer -signal win - - diff --git a/mini-game/scripts/bonus1.gd b/mini-game/scripts/bonus1.gd deleted file mode 100644 index 488fba1..0000000 --- a/mini-game/scripts/bonus1.gd +++ /dev/null @@ -1,20 +0,0 @@ -extends "scroll_movement.gd" - - -onready var notifier = $notifier - -func _ready(): - notifier.connect("screen_exited", self, "_on_screen_exited") - -func _on_screen_exited(): - queue_free() - - -func _physics_process(delta): - move() - - -func _on_pick_bonus_body_entered(body): - if body.name == "player2" : - Signals.emit_signal("gain",1) - queue_free() diff --git a/mini-game/scripts/obstacle1.gd b/mini-game/scripts/obstacle1.gd deleted file mode 100644 index b738ac7..0000000 --- a/mini-game/scripts/obstacle1.gd +++ /dev/null @@ -1,22 +0,0 @@ -extends "scroll_movement.gd" - - - -onready var notifier = $notifier - -func _ready(): - get_node("notifier").connect("screen_exited", self, "_on_screen_exited") - -func _on_screen_exited(): - print("Obstacle exited the screen") - queue_free() - -func _physics_process(delta): - move() - - -func _on_collision_obstacle_body_entered(body): - if body.name == "player2" : - Signals.emit_signal("die") - queue_free() - diff --git a/mini-game/scripts/player1.gd b/mini-game/scripts/player1.gd deleted file mode 100644 index cb1b1aa..0000000 --- a/mini-game/scripts/player1.gd +++ /dev/null @@ -1,16 +0,0 @@ -extends Node2D - - -# Declare member variables here. Examples: -# var a = 2 -# var b = "text" -onready var animation = $AnimatedSprite - -# Called when the node enters the scene tree for the first time. -func _ready(): - animation.play("run") - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass diff --git a/mini-game/scripts/player2.gd b/mini-game/scripts/player2.gd deleted file mode 100644 index 070af6d..0000000 --- a/mini-game/scripts/player2.gd +++ /dev/null @@ -1,111 +0,0 @@ -extends KinematicBody2D - -var vitesse = Vector2.ZERO - -var score = 0 -var score_goal = 10 - -export var jump_vitesse = 1100.0 -export var gravite = 45.0 - -enum { - RUN, - JUMP, - IDLE -} - -enum { - SCORE, - TIME -} - -var jump_key = "dialogic_next" - -var player_enabled = false -var game_mode = "score" - -var state = RUN -var au_sol = true - -# Declare member variables here. Examples: -# var a = 2 -# var b = "text" -onready var animation = $AnimatedSprite - -# Called when the node enters the scene tree for the first time. -func _ready(): - stop() - Signals.connect("gain",self,"increase_score") - Signals.connect("die",self,"player_die") - -func _physics_process(delta): - if player_enabled: - match state: - RUN: - animation.play("man_run") - JUMP: - vitesse = Vector2.ZERO - vitesse.y -= jump_vitesse - animation.play("man_jump") - state = IDLE - IDLE: - pass - vitesse.y += gravite - move_and_collide(vitesse*delta) - - -func _input(event): - if player_enabled and state == RUN and event.is_action_pressed(jump_key): - state = JUMP - - -func _on_Area2D_body_entered(body): - if body is StaticBody2D: - state = RUN - - - -func _on_Area2D_body_exited(body): - if body is StaticBody2D: - state = JUMP - - -func increase_score(scoretoadd): - 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(mode: String, goal: int): - show() - match mode: - "score": - if (goal != 0): - score_goal = goal - game_mode = "score" - "time": - game_mode = "time" - _: - print("game_mode not recognized by player2 start func") - score = 0 - player_enabled = true - - -func stop(): - hide() - player_enabled = false diff --git a/mini-game/scripts/scroll_movement.gd b/mini-game/scripts/scroll_movement.gd deleted file mode 100644 index 5ba12b2..0000000 --- a/mini-game/scripts/scroll_movement.gd +++ /dev/null @@ -1,14 +0,0 @@ -extends Node2D - -#export var scroll_speed = 6.3 -export var scroll_speed = 9 - -func _ready(): - Signals.connect("die",self,"game_over") - -func move(): - self.position.x -= scroll_speed - -func game_over(): - print("game_over") - scroll_speed = 0 diff --git a/mini-game/scripts/spawner.gd b/mini-game/scripts/spawner.gd deleted file mode 100644 index 5681a94..0000000 --- a/mini-game/scripts/spawner.gd +++ /dev/null @@ -1,64 +0,0 @@ -extends Node2D - -export (Array,PackedScene) var scenes - -var random_scene = RandomNumberGenerator.new() -var scene_index = 0; -var last_object -var end_of_game = false -var spawner_enabled = false -var timer_speed = 0.99 -var random_threshold = 50 -var scenes_offset = 0 - -onready var timer := $Timer -onready var items := $items - -func _ready(): - Signals.connect("die",self,"game_over") - Signals.connect("win",self,"game_over") - - -func _on_Timer_timeout(): - if spawner_enabled: - random_scene.randomize() - scene_index = random_scene.randi_range(1,100) - if(scene_index >= random_threshold): - scene_index = 1 - else: - scene_index = 0 - var tmp = scenes[scene_index+scenes_offset*2].instance() - items.add_child(tmp) - last_object = tmp - if(timer.wait_time <= 1): - timer.wait_time = 1 - else: - timer.wait_time *= timer_speed - timer.start() - - -func game_over(): - timer.set_paused(true) - #last_object.queue_free() - - -func start(difficulty, version): - match difficulty: - "easy": - timer_speed = 0.99 - random_threshold = 50 - "hard": - timer_speed = 0.95 - random_threshold = 33 - _: - pass - scenes_offset = version - spawner_enabled = true - timer.set_paused(false) - - -func stop(): - spawner_enabled = false - for obj in $items.get_children(): - remove_child(obj) - obj.queue_free()