Added win condition for level 1 and added boss fight for level 5

This commit is contained in:
VoidTwo
2021-12-10 14:23:23 -06:00
parent 3c880d1566
commit e5aafa6cd0
74 changed files with 791 additions and 1300 deletions

View File

@@ -0,0 +1,10 @@
extends Area2D
export var x_location: int
export var y_location: int
func _on_teleporter_body_entered(body: Node) -> void:
if body.is_in_group('player'):
body.set_deferred('position', Vector2(x_location, y_location))
return

View File

@@ -0,0 +1,34 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://Sprites/Assets/Light.png" type="Texture" id=1]
[ext_resource path="res://Sprites/Levels/Interactables/Teleport_Pad.png" type="Texture" id=2]
[ext_resource path="res://Levels/Interactables/Teleporter.gd" type="Script" id=3]
[sub_resource type="CircleShape2D" id=1]
radius = 8.0
[node name="Teleporter" type="Area2D"]
light_mask = 0
collision_layer = 0
collision_mask = 2
input_pickable = false
monitorable = false
script = ExtResource( 3 )
[node name="Sprite" type="Sprite" parent="."]
self_modulate = Color( 0.564706, 1, 0.560784, 1 )
texture = ExtResource( 2 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
visible = false
light_mask = 0
shape = SubResource( 1 )
[node name="Light" type="Light2D" parent="."]
texture = ExtResource( 1 )
texture_scale = 0.4
color = Color( 0.341176, 1, 0.321569, 1 )
energy = 1.2
shadow_item_cull_mask = 0
[connection signal="body_entered" from="." to="." method="_on_teleporter_body_entered"]

View File

@@ -1,17 +1,17 @@
extends Node2D
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
var death_count: int = 0
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
$YSort/Player.load_hud($HUD)
return
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
# pass
func _on_dark_matter_death() -> void:
death_count += 1
if death_count == 5:
if get_tree().change_scene('res://GUI/Level Complete.tscn') != OK:
print('ERROR: Level 1 failed to change scene to Level Complete.')
queue_free()
return

View File

@@ -72,3 +72,9 @@ mode = 1
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Map_boundary"]
build_mode = 1
polygon = PoolVector2Array( 0.762451, -22.0982, 427.859, -18.7308, 425.053, 245.609, -22.248, 248.976, -21.1256, -22.6594, -0.589813, -21.9661, -0.589806, 225.272, 400.359, 224.843, 399.969, -0.312477, 0.455406, -0.154987 )
[connection signal="death" from="YSort/Enemies/Dark Matter" to="." method="_on_dark_matter_death"]
[connection signal="death" from="YSort/Enemies/Dark Matter2" to="." method="_on_dark_matter_death"]
[connection signal="death" from="YSort/Enemies/Dark Matter3" to="." method="_on_dark_matter_death"]
[connection signal="death" from="YSort/Enemies/Dark Matter4" to="." method="_on_dark_matter_death"]
[connection signal="death" from="YSort/Enemies/Dark Matter5" to="." method="_on_dark_matter_death"]

View File

@@ -7,51 +7,51 @@ var score = 0
func _ready() -> void:
$YSort/Player.load_hud($HUD)
screensize = get_viewport_rect().size
spawn_coins(8)
return
$YSort/Player.load_hud($HUD)
screensize = get_viewport_rect().size
spawn_coins(8)
return
func spawn_coins(num: int) -> void:
for _i in range(num):
var g: Node = coin.instance()
$'coin_container'.add_child(g)
g.connect('coin_grabbed', self, '_on_coin_grabbed')
#g.set_pos(Vector2(rand_range(0, screensize.x - 40), rand_range(0, screensize.y - 40)))
g.position = Vector2(rand_range(0, screensize.x - 40), rand_range(0, screensize.y - 40))
return
for _i in range(num):
var g: Node = coin.instance()
$'coin_container'.add_child(g)
g.connect('coin_grabbed', self, '_on_coin_grabbed')
#g.set_pos(Vector2(rand_range(0, screensize.x - 40), rand_range(0, screensize.y - 40)))
g.position = Vector2(rand_range(0, screensize.x - 40), rand_range(0, screensize.y - 40))
return
func _on_coin_grabbed() -> void:
score += 1
print(score)
$'Level 3 HUD/Label'.set_text(str(score) + '/5')
return
score += 1
print(score)
$'Level 3 HUD/Label'.set_text(str(score) + '/5')
return
func _timer_out() -> void:
get_tree().change_scene('res://Levels/Hub World.tscn')
queue_free()
return
get_tree().change_scene('res://Levels/Hub World.tscn')
queue_free()
return
func _on_TreasureChest_ice_key_collected() -> void:
$YSort/Door/doorClosed.visible = false
$YSort/Door/doorOpened.visible = true
$YSort/DoorCollision.layers = 5
return
$YSort/Door/doorClosed.visible = false
$YSort/Door/doorOpened.visible = true
$YSort/DoorCollision.layers = 5
return
func _on_DoorDetector_body_entered(body: Node) -> void:
if body.is_in_group('player'):
print('WIN WIN WIN')
get_tree().change_scene('res://Levels/Hub World.tscn')
return
if body.is_in_group('player'):
print('WIN WIN WIN')
get_tree().change_scene('res://Levels/Hub World.tscn')
return
func _on_DoorDetector_area_entered(area: Area2D) -> void:
if area.get_parent().name == 'Player':
get_tree().change_scene('res://GUI/Level Complete.tscn')
queue_free()
return
if area.get_parent().name == 'Player':
get_tree().change_scene('res://GUI/Level Complete.tscn')
queue_free()
return

View File

@@ -2,28 +2,29 @@ extends Node2D
var gems: int = 4
func _ready() -> void:
#$YSort/Player.position = get_viewport_rect().size / 2
$YSort/Player.load_hud($HUD)
return
$YSort/Player.load_hud($HUD)
return
func _on_TreasureChest_gem_collected() -> void:
gems -= 1
if gems == 0:
$YSort/Items/Door/doorClosed.visible = false
$YSort/Items/Door/doorOpened.visible = true
$DoorCollision.layers = 5
gems -= 1
if gems == 0:
$YSort/Items/Door/doorClosed.visible = false
$YSort/Items/Door/doorOpened.visible = true
$DoorCollision.layers = 5
return
func _on_NextArea_area_entered(area: Area2D) -> void:
if area.get_parent().name == 'Player':
$YSort/Player.position.x = 195
$YSort/Player.position.y = -335
if area.get_parent().name == 'Player':
$YSort/Player.position.x = 195
$YSort/Player.position.y = -335
return
func _on_Demon_Boss_demon_boss_death() -> void:
get_tree().change_scene('res://GUI/Level Complete.tscn')
queue_free()
get_tree().change_scene('res://GUI/Level Complete.tscn')
queue_free()

View File

@@ -2,5 +2,26 @@ extends Node2D
func _ready() -> void:
$YSort/Player.load_hud($HUD)
return
$YSort/Player.load_hud($HUD)
return
func _on_activate_boss_teleporter_body_entered(body: Node) -> void:
$'Interactables/Boss Teleporter'.set_deferred('visible', true)
$'Interactables/Activate Boss Teleporter'.call_deferred('queue_free')
return
func _on_eyeball_boss_death() -> void:
$YSort/Enemies.call_deferred('queue_free')
$Lights.call_deferred('queue_free')
$Darkness.set_visible(false)
$Ending.start()
return
func _on_ending_timeout():
if get_tree().change_scene('res://GUI/Level Complete.tscn') != OK:
print('ERROR: Level 5 failed to change scene to Level Complete.')
queue_free()
return

File diff suppressed because one or more lines are too long

View File

@@ -37,9 +37,9 @@ func _on_shoot_timeout():
shoot_array = rotated_shoot_directions
for itr in shoot_array:
var projectile: Node = glowing_fireball.instance()
projectile.init(center, itr)
get_tree().get_current_scene().get_node('Projectiles').add_child(projectile)
var projectile: Node = glowing_fireball.instance()
projectile.init(center, itr)
get_tree().get_current_scene().get_node('Projectiles').add_child(projectile)
return