extends Node2D var difficulty:String var isChapterZooming var chapter:String onready var zoomTime = 3.2 var endPosition:String func _ready(): get_node("/root/BgmScene").StopMenuMusic() get_node("/root/BgmScene").SetBGM("City SFX") GallerySingleton.AddMusic("BigCity"); GallerySingleton.AddBackground("ChapterSelector"); Localization(); if not SceneLoader.is_connected("on_scene_loaded", self, "OpenAnotherScene"): var _temp = SceneLoader.connect("on_scene_loaded", self, "OpenAnotherScene") isChapterZooming = true; SetCamera("full") yield ($Camera2D / Tween, "tween_all_completed") isChapterZooming = false; func Localization(): $text / Journey.text = tr("ui_adventure") $text / buttons / Yes.text = tr("ui_yes"); $text / buttons / No.text = tr("ui_no"); $ChapterLabels / SelectChapter.text = tr("ui_select_chapter").to_upper(); $ChapterLabels / chapter1.text = str(tr("ui_chapter"), " 1"); func SetCamera(camPos:String): var finalPos = Vector2(960, 540); var finalZoom = Vector2(1, 1); endPosition = camPos match camPos: "full": pass "brown": finalPos = Vector2(1726, 461); finalZoom = Vector2(0.2, 0.2); "green": finalPos = Vector2(1102, 590); finalZoom = Vector2(0.2, 0.2); var camera = $Camera2D var startPos = camera.position var startZoom = camera.zoom $Camera2D.position = startPos; $Camera2D.zoom = startZoom; $Camera2D / Tween.interpolate_method(self, "ChangePosition", startPos, finalPos, zoomTime, Tween.TRANS_LINEAR, 0); $Camera2D / Tween.interpolate_method(self, "ChangeZoom", startZoom, finalZoom, zoomTime, Tween.TRANS_LINEAR, 0); $Camera2D / Tween.start(); func SetCameraToFinalPos(camPos:String): var finalPos = Vector2(960, 540); var finalZoom = Vector2(1, 1); match camPos: "full": pass "brown": finalPos = Vector2(1726, 461); finalZoom = Vector2(0.2, 0.2); "green": finalPos = Vector2(1102, 590); finalZoom = Vector2(0.2, 0.2); $Camera2D.position = finalPos; $Camera2D.zoom = finalZoom; func ChangePosition(newPosition): $Camera2D.position = newPosition func ChangeZoom(newZoom): $Camera2D.zoom = newZoom func _on_brown_pressed(): isChapterZooming = true $text.rect_position = Vector2(1534.5, 400) $text.rect_scale = Vector2(0.25, 0.25) chapter = "Brown" SetCamera("brown") yield ($Camera2D / Tween, "tween_all_completed") $ChapterLabels.visible = false; isChapterZooming = false $text.visible = true func _on_green_pressed(): isChapterZooming = true $text.rect_position = Vector2(910.5, 529) $text.rect_scale = Vector2(0.25, 0.25) chapter = "Green" SetCamera("green") yield ($Camera2D / Tween, "tween_all_completed") $ChapterLabels.visible = false; isChapterZooming = false $text.visible = true func _on_Yes_pressed(): $text / buttons.visible = false; get_tree().root.get_node("Loading").ShowLoader(); SceneLoader.free_scene_cache("Game"); LoadScene("res://scenes/Game.tscn"); func _on_No_pressed(): $text.visible = false $ChapterLabels.visible = true; isChapterZooming = true SetCamera("full") yield ($Camera2D / Tween, "tween_all_completed") isChapterZooming = false func MenuLoaded(obj): if obj.path != "res://scenes/MainMenu.tscn": return ; if obj.instance != null: get_tree().root.add_child(obj.instance); for i in get_tree().root.get_children(): if i.name == "ChapterSelector": get_tree().root.remove_child(i); break; SceneLoader.disconnect("on_scene_loaded", self, "MenuLoaded"); func _input(ev): if ev is InputEventKey and ev.scancode == KEY_ESCAPE and not ev.pressed: if isChapterZooming: $Camera2D / Tween.remove_all(); SetCameraToFinalPos(endPosition); $Camera2D / Tween.emit_signal("tween_all_completed") elif $Camera2D.position == Vector2(960, 540): get_node("/root/BgmScene").SetBGM("99"); get_tree().root.get_node("BgmScene").StartMenuMusic(); if not SceneLoader.is_connected("on_scene_loaded", self, "MenuLoaded"): var _temp = SceneLoader.connect("on_scene_loaded", self, "MenuLoaded"); SceneLoader.load_scene("res://scenes/MainMenu.tscn") if ev is InputEventKey and ev.scancode == KEY_SPACE: if isChapterZooming: $Camera2D / Tween.remove_all(); SetCameraToFinalPos(endPosition) $Camera2D / Tween.emit_signal("tween_all_completed") if ev is InputEventMouseButton and ev.button_index == BUTTON_LEFT and not ev.pressed: if isChapterZooming: $Camera2D / Tween.remove_all(); SetCameraToFinalPos(endPosition) $Camera2D / Tween.emit_signal("tween_all_completed") var loadingPath:String = ""; func LoadScene(path): SceneLoader.load_scene(path); loadingPath = path; func OpenAnotherScene(obj): if obj.path == loadingPath: get_tree().root.add_child(obj.instance); CloseMenu(); func CloseMenu(): for i in get_tree().root.get_children(): if i.name == "ChapterSelector": get_tree().root.remove_child(i); break; SceneLoader.disconnect("on_scene_loaded", self, "OpenAnotherScene"); func InitForGallery()->Array: $Camera2D.current = false scale = Vector2(0.5, 0.5); $ChapterLabels.visible = false; $brown.visible = false; return []; func _on_chapter1_pressed(): _on_brown_pressed()