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 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()