LevelInfo.gd 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. extends VBoxContainer
  2. signal closed
  3. var file_path := ""
  4. var active := false
  5. func _ready() -> void:
  6. set_process(false)
  7. signal level_play
  8. signal level_edit
  9. func open(container: CustomLevelContainer = null) -> void:
  10. if container != null:
  11. for i in ["level_name", "level_author", "level_theme", "game_style", "level_time", "difficulty"]:
  12. %SelectedLevel.set(i, container.get(i))
  13. %SelectedLevel.update_visuals()
  14. LevelEditor.level_name = container.level_name
  15. CustomLevelMenu.current_level_file = container.file_path
  16. LevelEditor.level_author = container.level_author
  17. file_path = container.file_path
  18. LevelEditor.level_desc = container.level_desc
  19. %Description.text = container.level_desc
  20. show()
  21. await get_tree().physics_frame
  22. active = true
  23. set_process(true)
  24. %Play.grab_focus()
  25. func reopen() -> void:
  26. show()
  27. await get_tree().physics_frame
  28. active = true
  29. set_process(true)
  30. %Play.grab_focus()
  31. func _process(_delta: float) -> void:
  32. if Input.is_action_just_pressed("ui_back") and active:
  33. closed.emit()
  34. close()
  35. func level_selected() -> void:
  36. LevelEditor.level_file = JSON.parse_string(FileAccess.open(file_path, FileAccess.READ).get_as_text())
  37. level_play.emit()
  38. active = false
  39. func level_edited() -> void:
  40. LevelEditor.level_file = JSON.parse_string(FileAccess.open(file_path, FileAccess.READ).get_as_text())
  41. level_edit.emit()
  42. func close() -> void:
  43. hide()
  44. set_process(false)