diff --git a/Assets/BigPlaceholder.png b/Assets/BigPlaceholder.png index 06c0a8c..36a6eae 100644 Binary files a/Assets/BigPlaceholder.png and b/Assets/BigPlaceholder.png differ diff --git a/Scene/FastTrail.tscn b/Scene/FastTrail.tscn index 45c7a28..3d038e6 100644 --- a/Scene/FastTrail.tscn +++ b/Scene/FastTrail.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=5 format=2] -[ext_resource path="res://Assets/BigPlaceholder.png" type="Texture" id=1] +[ext_resource path="res://Assets/PAINT1.png" type="Texture" id=1] [ext_resource path="res://Scripts/FastTrail.gd" type="Script" id=2] +[ext_resource path="res://Assets/BigPlaceholder.png" type="Texture" id=3] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 88.8117, 26.2111 ) @@ -12,6 +13,7 @@ script = ExtResource( 2 ) [node name="Sprite" type="Sprite" parent="."] modulate = Color( 0.901961, 0, 0, 1 ) +light_mask = 64 z_index = 10 texture = ExtResource( 1 ) offset = Vector2( 88, 0 ) @@ -19,4 +21,13 @@ offset = Vector2( 88, 0 ) [node name="Area2D" type="Area2D" parent="Sprite"] [node name="CollisionShape2D" type="CollisionShape2D" parent="Sprite/Area2D"] +visible = false +position = Vector2( 87, 0 ) shape = SubResource( 1 ) + +[node name="Mask" type="Light2D" parent="."] +position = Vector2( 88.2346, -0.629855 ) +scale = Vector2( 1, 1.2 ) +texture = ExtResource( 3 ) +mode = 3 +range_item_cull_mask = 64 diff --git a/Scene/SlowTrail.tscn b/Scene/SlowTrail.tscn index 12d1853..bdba376 100644 --- a/Scene/SlowTrail.tscn +++ b/Scene/SlowTrail.tscn @@ -1,16 +1,18 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=5 format=2] -[ext_resource path="res://Assets/BigPlaceholder.png" type="Texture" id=1] +[ext_resource path="res://Assets/PAINT1.png" type="Texture" id=1] [ext_resource path="res://Scripts/SlowTrail.gd" type="Script" id=2] +[ext_resource path="res://Assets/BigPlaceholder.png" type="Texture" id=3] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 88.8117, 26.2111 ) [node name="SlowTrail" type="Node2D"] -rotation = -6.28319 script = ExtResource( 2 ) [node name="Sprite" type="Sprite" parent="."] +modulate = Color( 0.0392157, 0.0313726, 0.917647, 1 ) +light_mask = 512 z_index = 10 texture = ExtResource( 1 ) offset = Vector2( 88, 0 ) @@ -18,4 +20,13 @@ offset = Vector2( 88, 0 ) [node name="Area2D" type="Area2D" parent="Sprite"] [node name="CollisionShape2D" type="CollisionShape2D" parent="Sprite/Area2D"] +visible = false +position = Vector2( 87, 0 ) shape = SubResource( 1 ) + +[node name="Mask" type="Light2D" parent="."] +position = Vector2( 88, 0 ) +scale = Vector2( 1, 1.2 ) +texture = ExtResource( 3 ) +mode = 3 +range_item_cull_mask = 512 diff --git a/Scripts/FastTrail.gd b/Scripts/FastTrail.gd index 7076b6b..d4ea5e4 100644 --- a/Scripts/FastTrail.gd +++ b/Scripts/FastTrail.gd @@ -4,25 +4,33 @@ var fastFactor var lifetime = 5 var elapsed = 0 var sprite +var players + +onready var mask = $Mask func slow_player(victim): if victim.is_in_group("Player"): - victim.MAX_SPEED *= fastFactor - victim.ACCELERATION *= fastFactor + players.append(victim) func unslow_player(victim): - if victim.is_in_group("Player"): - victim.MAX_SPEED /= fastFactor - victim.ACCELERATION /= fastFactor + players.remove(players.find(victim)) # Called when the node enters the scene tree for the first time. func _ready(): + players = [] sprite = get_node("Sprite") get_node("Sprite/Area2D").connect("body_entered", self, "slow_player") get_node("Sprite/Area2D").connect("body_exited", self, "unslow_player") func _process(delta): elapsed += delta + if mask != null: + mask.offset.x = lerp(88, 270, elapsed / 0.8) + if mask.offset.x >= 269: + mask.queue_free() + mask = null + for each in players: + each.SPEED_FACTORS.append(2) if elapsed >= lifetime * 0.7: sprite.self_modulate = Color(1,1,1,lerp(1, 0, (elapsed - lifetime * 0.7) / (lifetime * 0.3))) if elapsed >= lifetime: diff --git a/Scripts/Player.gd b/Scripts/Player.gd index 488d68b..bf63c65 100644 --- a/Scripts/Player.gd +++ b/Scripts/Player.gd @@ -71,6 +71,7 @@ func _ready(): func launch_slow(): if slow_cooldown_elapsed < slow_cooldown: return + curLife -= 3 slow_cooldown_elapsed = 0 var world = get_parent() var inst = load("res://Scene/SlowTrail.tscn").instance() @@ -89,6 +90,7 @@ func launch_slow(): func launch_fast(): if fast_cooldown_elapsed < fast_cooldown: return + curLife -= 3 fast_cooldown_elapsed = 0 var world = get_parent() var inst = load("res://Scene/FastTrail.tscn").instance() @@ -119,6 +121,7 @@ func _process(delta): updatePaintEffects(delta) curLife -= delta slow_cooldown_elapsed += delta + fast_cooldown_elapsed += delta if curLife <= 0: get_node("/root/World/GameManager").endGame() healthBar.healthUpdated(curLife) diff --git a/Scripts/SlowTrail.gd b/Scripts/SlowTrail.gd index 6e1f699..568229a 100644 --- a/Scripts/SlowTrail.gd +++ b/Scripts/SlowTrail.gd @@ -4,24 +4,33 @@ var slowFactor var lifetime = 5 var elapsed = 0 var sprite +var players -func slow_player(victim): +onready var mask = $Mask + +func slow_player(victim): if victim.is_in_group("Player"): - victim.MAX_SPEED /= slowFactor + players.append(victim) -func unslow_player(victim): - if victim.is_in_group("Player"): - victim.MAX_SPEED *= slowFactor +func unslow_player(victim): + players.remove(players.find(victim)) # Called when the node enters the scene tree for the first time. func _ready(): + players = [] sprite = get_node("Sprite") get_node("Sprite/Area2D").connect("body_entered", self, "slow_player") - get_node("Sprite/Area2D").connect("body_entered", self, "slow_player") get_node("Sprite/Area2D").connect("body_exited", self, "unslow_player") func _process(delta): elapsed += delta + if mask != null: + mask.offset.x = lerp(88, 270, elapsed / 0.8) + if mask.offset.x >= 269: + mask.queue_free() + mask = null + for each in players: + each.SPEED_FACTORS.append(0.5) if elapsed >= lifetime * 0.7: sprite.self_modulate = Color(1,1,1,lerp(1, 0, (elapsed - lifetime * 0.7) / (lifetime * 0.3))) if elapsed >= lifetime: