From 4fa0d2e08625f9be017b6df7272e6157ef2ccdbb Mon Sep 17 00:00:00 2001 From: dariasteam Date: Mon, 19 Feb 2018 20:15:01 +0000 Subject: [PATCH] add bonus system --- Scenes/Events/UFO.tscn | 8 ++-- Scenes/Events/cowbell_bonus.tscn | 72 ++++++++++++++++++++++++++++++++ Scenes/Events/player.gd | 1 - Scenes/Menu/HUD.tscn | 5 +++ Scenes/Menu/cowbells_hud.gd | 21 ++++++++-- 5 files changed, 100 insertions(+), 7 deletions(-) create mode 100644 Scenes/Events/cowbell_bonus.tscn diff --git a/Scenes/Events/UFO.tscn b/Scenes/Events/UFO.tscn index eca729a..60b010c 100644 --- a/Scenes/Events/UFO.tscn +++ b/Scenes/Events/UFO.tscn @@ -80,7 +80,7 @@ tracks/0/keys = { [sub_resource type="RectangleShape2D" id=8] custom_solver_bias = 0.0 -extents = Vector2( 28.4934, 48.5983 ) +extents = Vector2( 4.3399, 110.989 ) [node name="UFO" type="Node2D"] @@ -91,6 +91,7 @@ script/script = SubResource( 9 ) editor/display_folded = true visibility/behind_parent = true transform/pos = Vector2( 0, 131 ) +z/z = 2 [node name="ray_outter" type="Sprite" parent="Ray"] @@ -432,6 +433,7 @@ trigger = false [node name="player_spawner" parent="." instance=ExtResource( 5 )] +editor/display_folded = true transform/pos = Vector2( -1.5159, 199.14 ) [node name="Sprite_cow" type="Sprite" parent="player_spawner"] @@ -458,7 +460,7 @@ autoplay = "" [node name="Area2D" type="Area2D" parent="player_spawner"] -transform/pos = Vector2( 1.00537, -0.359009 ) +transform/pos = Vector2( 1.00537, -57.1355 ) input/pickable = true shapes/0/shape = SubResource( 8 ) shapes/0/transform = Matrix32( 1, 0, 0, 1, -0.263519, 0 ) @@ -477,7 +479,7 @@ _update_shape_index = 0 [node name="Instancer" type="Node2D" parent="player_spawner"] -transform/scale = Vector2( 0.6, 0.6 ) +transform/scale = Vector2( 0.5882, 0.5882 ) [connection signal="body_enter" from="player_spawner/Area2D" to="player_spawner" method="_on_Area2D_body_enter"] diff --git a/Scenes/Events/cowbell_bonus.tscn b/Scenes/Events/cowbell_bonus.tscn new file mode 100644 index 0000000..350c3c5 --- /dev/null +++ b/Scenes/Events/cowbell_bonus.tscn @@ -0,0 +1,72 @@ +[gd_scene load_steps=4 format=1] + +[ext_resource path="res://Fonts/Cave-Story.fnt" type="BitmapFont" id=1] + +[sub_resource type="GDScript" id=1] + +script/source = "extends RichTextLabel + +func _ready(number): + set_text(str(\"+\", number)) + +func _on_AnimationPlayer_finished(): + queue_free() +" + +[sub_resource type="Animation" id=2] + +length = 1.0 +loop = false +step = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath(".:rect/pos") +tracks/0/interp = 1 +tracks/0/imported = false +tracks/0/keys = { +"times": FloatArray( 0, 0.4, 0.6, 0.7, 0.8, 0.9, 0.9, 1 ), +"transitions": FloatArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 94 ), Vector2( 0, 50 ), Vector2( 0, 37 ), Vector2( 0, 32.6667 ), Vector2( 0, 28.3333 ), Vector2( 630, 24 ), Vector2( 0, 24 ), Vector2( 0, 22 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:visibility/opacity") +tracks/1/interp = 1 +tracks/1/imported = false +tracks/1/keys = { +"times": FloatArray( 0, 1 ), +"transitions": FloatArray( 1, 1 ), +"update": 0, +"values": [ 1.0, 0.0 ] +} + +[node name="Bonus" type="RichTextLabel"] + +focus/ignore_mouse = false +focus/stop_mouse = true +size_flags/horizontal = 2 +size_flags/vertical = 2 +margin/left = 0.0 +margin/top = 94.0 +margin/right = 202.0 +margin/bottom = 228.0 +custom_fonts/normal_font = ExtResource( 1 ) +bbcode/enabled = true +bbcode/bbcode = "+15" +visible_characters = -1 +percent_visible = 1.0 +script/script = SubResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] + +playback/process_mode = 1 +playback/default_blend_time = 0.0 +root/root = NodePath("..") +anims/bonus_up = SubResource( 2 ) +playback/active = true +playback/speed = 1.0 +blend_times = [ ] +autoplay = "bonus_up" + +[connection signal="finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_finished"] + + diff --git a/Scenes/Events/player.gd b/Scenes/Events/player.gd index fa30708..73c69af 100644 --- a/Scenes/Events/player.gd +++ b/Scenes/Events/player.gd @@ -62,7 +62,6 @@ func add_cowbells(var number): cowbells_collected += number hud_cowbell.set_counter (cowbells_collected, cowbell_collector.play_sound()) - func is_falling (): return velocity.y > 0 diff --git a/Scenes/Menu/HUD.tscn b/Scenes/Menu/HUD.tscn index 0505957..2990623 100644 --- a/Scenes/Menu/HUD.tscn +++ b/Scenes/Menu/HUD.tscn @@ -278,6 +278,7 @@ sprite3 = ExtResource( 11 ) transform/pos = Vector2( 3, 21 ) script/script = ExtResource( 12 ) +bonus_threshold = 25 [node name="Counter" type="RichTextLabel" parent="Control/Cowbells"] @@ -295,6 +296,10 @@ bbcode/bbcode = "0" visible_characters = -1 percent_visible = 1.0 +[node name="bonus_instancer" type="Node2D" parent="Control/Cowbells"] + +transform/pos = Vector2( 642, 43 ) + [node name="next_cowbell_timer" type="Timer" parent="Control/Cowbells"] process_mode = 1 diff --git a/Scenes/Menu/cowbells_hud.gd b/Scenes/Menu/cowbells_hud.gd index 7d6f577..badb737 100644 --- a/Scenes/Menu/cowbells_hud.gd +++ b/Scenes/Menu/cowbells_hud.gd @@ -4,12 +4,19 @@ extends Node2D # var a = 2 # var b = "textvar" +const BONUS = preload("res://Scenes/Events/cowbell_bonus.tscn") + onready var label = get_node("Counter") onready var animation = get_node("Sprite/Animation") onready var next_cowbell_timer = get_node("next_cowbell_timer") onready var cold_down_timer = get_node("cold_down_timer") onready var sprite = get_node("Sprite") onready var base_modulation = Color(1,1,1) +onready var instancer = get_node("bonus_instancer") + +export(int) var bonus_threshold = 25 + +var ac = 0 var frame_number @@ -17,14 +24,16 @@ func _ready(): animation.play("cowbell_animations") var anim = animation.get_animation("cowbell_animations") next_cowbell_timer.set_wait_time(anim.get_length() / animation.get_speed() ) - animation.set_active(false) + animation.set_active(false) func set_counter (var quantity, var acumulated): sprite.set_modulate(Color (1,1 - acumulated * 2,1 - acumulated * 2)) label.set_bbcode(" " + String(quantity)) animation.set_active(true) + ac += 1 next_cowbell_timer.start() cold_down_timer.start() + func _on_next_cowbell_timer_timeout(): sprite.set_frame(0) @@ -34,6 +43,12 @@ func _on_cold_down_timer_timeout(): var current_modulation = sprite.get_modulate() if (current_modulation.g >= base_modulation.g && current_modulation.b >= base_modulation.b): sprite.set_modulate(base_modulation) - cold_down_timer.stop() - else: + cold_down_timer.stop() + else: sprite.set_modulate(Color (1,current_modulation.g + 0.02 ,current_modulation.b + 0.02)) + if (ac >= bonus_threshold): + instancer.add_child(BONUS.instance(1)) + get_tree().get_nodes_in_group("player")[0].add_cowbells(15) + ac = 0 + if (ac > 0): + ac -= 0.1