extends Node2D var currentintlevel := 1 var screenshots = 0 var game_over = false setget set_over var game_won = false setget set_won var over = false var just_started = true onready var level := $Level onready var console = MainInstances.console const path = "user://" func _ready(): if Utils.starting: start() Utils.starting = false if Utils.loading: Utils.loading = false currentintlevel = Utils.loading_int Utils.loading_int = 0 start() $WinScreen.player = $Level/LevelContainer/Player $WinScreen.hide(false) level.connect("level_completed", self, "_on_Level_level_completed") level.connect("level_reset", self, "_on_Level_level_reset") level.connect("game_over", self, "_on_Level_game_over") func _on_Level_level_completed(complete = false): $Level/CanvasLayer/HUD/StopWatch.set_process(false) if complete: $WinScreen._show(str(level.current_level)) save(currentintlevel + 1) game_over = false game_won = true else: $Level/LevelContainer/LevelComplete.play("Animate") get_tree().call_group("target", "play_pulse") func _on_Level_level_reset(): $WinScreen.hide(true) $GameoverScreen.hide(true) game_over = false game_won = false func save(new_level): # what level are we on/going to if (new_level) > int(SaveLoad.files.level.data.highest_level): SaveLoad.files.level.data.highest_level = str(new_level - 1) console.Log("New Highscore!") SaveLoad.save("level") func _on_Level_game_over(): game_over = true game_won = false $GameoverScreen._show(str(level.current_level)) onready var cam = $Level/LevelContainer/Player.cam var max_zoom = 3 var min_zoom = .25 func _input(event: InputEvent): if event.is_action("scrollup"): var new_zoom = cam.zoom.x new_zoom += .01 new_zoom = clamp(new_zoom, min_zoom, max_zoom) cam.zoom = Vector2(new_zoom, new_zoom) elif event.is_action("scrolldown"): var new_zoom = cam.zoom.x new_zoom -= .03 new_zoom = clamp(new_zoom, min_zoom, max_zoom) cam.zoom = Vector2(new_zoom, new_zoom) elif event.is_action_released("next"): currentintlevel += 1 currentintlevel = clamp(currentintlevel, 1, 60) start() if event.is_action_released("ui_accept"): if $WinScreen.shown: currentintlevel += 1 $WinScreen.hide(true) game_won = false level.load_level(str(currentintlevel)) elif $GameoverScreen.shown: $GameoverScreen.hide(true) game_won = false game_over = false level.load_level(str(currentintlevel), false) elif event.is_action_released("prtscrn"): screenshots += 1 screenshots = clamp(screenshots, 0, 20) var save_path = path + "sokobanscreenshot_%s.png" % str(screenshots) var image = get_viewport().get_texture().get_data() image.flip_y() if console.Log( ( "saved to: " + OS.get_user_data_dir() + "/" + "sokobanscreenshot_%s.png" % str(screenshots) ), 1, 2.5 ): image.save_png(save_path) func start(): Utils.load_loading_screen() yield(Utils, "loaded_loading_screen") $Level/CanvasLayer/HUD.show() level.show() level.load_level(str(currentintlevel)) func set_won(value): game_won = value over = game_over or game_won func set_over(value): game_over = value over = game_over or game_won