You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
2.8 KiB
114 lines
2.8 KiB
extends Node2D
|
|
|
|
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
|
|
var gravity_vector = ProjectSettings.get_setting("physics/2d/default_gravity_vector")
|
|
var player = load("res://scenes/pDasher.tscn")
|
|
var level
|
|
var direction: int = 1
|
|
var paused: bool = false
|
|
var asp: AudioStreamPlayer
|
|
var switch_gravity_sound = preload("res://audio/switch_gravity.wav")
|
|
var win = preload("res://scenes/UI/Win.tscn").instantiate()
|
|
var end = preload("res://scenes/UI/End.tscn").instantiate()
|
|
@export var Levels: Array[Resource] = [ preload("res://scenes/levels/level_0.tscn"), preload("res://scenes/levels/level_1.tscn") ]
|
|
var level_n: int = 0
|
|
var pDasher
|
|
|
|
|
|
## WORLD METHODS
|
|
func switch_gravity():
|
|
gravity_vector = gravity_vector.rotated(deg_to_rad(180))
|
|
|
|
func switch_direction():
|
|
print("changing")
|
|
direction *= -1
|
|
|
|
## NAVIGATION
|
|
func player_fail():
|
|
$".".hide()
|
|
#$pDasher.queue_free()
|
|
|
|
#ONLY IF NOT THERE ALREADY
|
|
|
|
if !$"."/End :
|
|
get_tree().get_root().add_child( end )
|
|
else:
|
|
$"."/End.show()
|
|
#get_tree().change_scene_to_file("res://scenes/UI/End.tscn")
|
|
|
|
func player_win():
|
|
level_n += 1
|
|
load_level()
|
|
$"." .hide()
|
|
get_tree().get_root().add_child( win )
|
|
#get_tree().change_scene_to_file("res://scenes/UI/Win.tscn")
|
|
|
|
func player_spawn():
|
|
pDasher.position = Vector2(0,0 )
|
|
|
|
func load_level():
|
|
if level_n == null:
|
|
level_n = 0
|
|
level = Levels[level_n]
|
|
|
|
func _ready():
|
|
|
|
load_level()
|
|
|
|
asp = $AudioStreamPlayer
|
|
|
|
#load player and level
|
|
get_node("/root/World").add_child( player.instantiate() )
|
|
get_node("/root/World").add_child( level.instantiate() ) #relative way meaning <ME> or whatever node this script is attached to.
|
|
|
|
# manage signals connections
|
|
var abysses = $Level/Abysses.get_children()
|
|
for abyss in abysses:
|
|
abyss.body_entered.connect( _on_abyss_body_entered )
|
|
|
|
var gravity_switches = $Level/Switches/Gravity.get_children()
|
|
for gswitch in gravity_switches:
|
|
gswitch.body_entered.connect( _on_gswitch_body_entered )
|
|
|
|
var direction_switches = $Level/Switches/Direction.get_children()
|
|
for dswitch in direction_switches:
|
|
dswitch.body_entered.connect( _on_dswitch_body_entered )
|
|
|
|
|
|
var checkpoints = $Level/Checkpoints.get_children()
|
|
for checkpoint in checkpoints:
|
|
#print( checkpoint )
|
|
checkpoint.body_entered.connect( _on_checkpoint_body_entered )
|
|
|
|
pDasher = get_node("/root/World/pDasher")
|
|
player_spawn()
|
|
## MAIN
|
|
#func _process(delta):
|
|
#pass
|
|
|
|
##SIGNAL HANDLING
|
|
func _on_abyss_body_entered(body):
|
|
#check that body is player
|
|
player_fail()
|
|
#print( str(body) + " se fue pal hoyo" )
|
|
|
|
func _on_gswitch_body_entered(body):
|
|
#check type of switch
|
|
#body.get_node("AnimationPlayer").spin()
|
|
asp.stream = switch_gravity_sound
|
|
asp.play()
|
|
switch_gravity()
|
|
|
|
func _on_dswitch_body_entered(body):
|
|
pDasher
|
|
pDasher.switch_direction()
|
|
|
|
|
|
|
|
func _on_checkpoint_body_entered(body):
|
|
body.direction = 0;
|
|
$Timer.start()
|
|
|
|
func _on_timeout():
|
|
player_win()
|