CustomLevelMenu.gd 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. class_name CustomLevelMenu
  2. extends Node
  3. static var current_level_file := ""
  4. static var has_entered := false
  5. var selected_lvl_idx := 0
  6. const CUSTOM_LEVEL_PATH := "user://custom_levels/"
  7. const base64_charset := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  8. func _ready() -> void:
  9. has_entered = true
  10. ResourceSetterNew.cache.clear()
  11. ResourceSetter.cache.clear()
  12. Global.get_node("GameHUD").hide()
  13. Checkpoint.passed = false
  14. Global.world_num = 1
  15. Global.level_num = 1
  16. Checkpoint.sublevel_id = 0
  17. Global.current_campaign = "SMB1"
  18. AudioManager.stop_all_music()
  19. Global.second_quest = false
  20. %LevelList.open(true)
  21. func _exit_tree() -> void:
  22. Global.get_node("GameHUD").show()
  23. func new_level() -> void:
  24. Global.current_game_mode = Global.GameMode.LEVEL_EDITOR
  25. LevelEditor.load_play = false
  26. LevelEditor.level_name = ""
  27. LevelEditor.level_author = ""
  28. LevelEditor.level_desc = ""
  29. LevelEditor.difficulty = 0
  30. LevelEditor.level_file = LevelEditor.BLANK_FILE.duplicate(true)
  31. Global.transition_to_scene("res://Scenes/Levels/LevelEditor.tscn")
  32. func back_to_title_screen() -> void:
  33. if Global.transitioning_scene:
  34. await Global.transition_finished
  35. Global.transition_to_scene("res://Scenes/Levels/TitleScreen.tscn")
  36. func edit_level() -> void:
  37. Global.current_game_mode = Global.GameMode.LEVEL_EDITOR
  38. LevelEditor.load_play = false
  39. Global.transition_to_scene("res://Scenes/Levels/LevelEditor.tscn")
  40. func play_level() -> void:
  41. Global.current_game_mode = Global.GameMode.CUSTOM_LEVEL
  42. Settings.file.difficulty.inf_lives = 1
  43. LevelEditor.load_play = true
  44. $CharacterSelect.open()
  45. await $CharacterSelect.selected
  46. LevelTransition.level_to_transition_to = ("res://Scenes/Levels/LevelEditor.tscn")
  47. Global.transition_to_scene("res://Scenes/Levels/LevelTransition.tscn")
  48. func delete_level() -> void:
  49. DirAccess.remove_absolute(current_level_file)
  50. go_back_to_list()
  51. %LevelList.refresh()
  52. if %LevelList.containers.is_empty() == false:
  53. %LevelList.containers[0].grab_focus()
  54. else:
  55. $BG/Border/Levels/VBoxContainer/LevelList/TopBit/Button.grab_focus()
  56. func go_back_to_list() -> void:
  57. $BG/Border/Levels/VBoxContainer/LevelList.show()
  58. %LevelInfo.hide()
  59. func open_lss_browser() -> void:
  60. $BG/Border/Levels/VBoxContainer/LevelList.hide()
  61. %LSSBrowser.open()
  62. func show_lss_level_info(container: OnlineLevelContainer) -> void:
  63. for i in ["level_name", "level_author", "level_theme", "level_id", "thumbnail_url"]:
  64. %SelectedOnlineLevel.set(i, container.get(i))
  65. %SelectedOnlineLevel.setup_visuals()
  66. LevelEditor.level_name = container.level_name
  67. LevelEditor.level_author = container.level_author
  68. %LSSDescription.text = "Fetching Description..."
  69. $BG/Border/Levels/VBoxContainer/LSSBrowser.hide()
  70. %LSSLevelInfo.show()
  71. await get_tree().physics_frame
  72. %Download.grab_focus()