/
PGStudio
/
DiplomaProject
Обзор
Документация
Войти
/
PGStudio
/
DiplomaProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
scripts/SelectionScreen.gd
64 строки
2 KB
PGStudio
first_commit
21 июн 2026, 21:56
21 июн 2026, 21:56
69ac2dc
Код
Авторство
О чём код?
extends Node2D # INITIALIZATION @onready var CurrentSubViewport: SubViewport = $SubViewportContainer/SubViewport @onready var CurrentSelectionScreen: Node2D = null @onready var CurrentVBoxContainer: VBoxContainer = null @onready var CurrentButtons: Array[Button] # BASE FUNCTIONS func _ready() -> void: CurrentSubViewport.transparent_bg = true func _process(_delta: float) -> void: pass # PUBLIC FUNCTIONS func set_selection_screen(selection_screen: PackedScene, selection_screen_count_buttons: int = 1) -> void: if selection_screen != null: CurrentSelectionScreen = selection_screen.instantiate() CurrentSubViewport.add_child(CurrentSelectionScreen) CurrentVBoxContainer = CurrentSelectionScreen.find_child("VBoxContainer") CurrentButtons.append(CurrentVBoxContainer.find_child("Button")) for i in range(selection_screen_count_buttons - 1): var button = CurrentButtons[0].duplicate() CurrentButtons.append(button) CurrentVBoxContainer.add_child(button) CurrentVBoxContainer.size.y = CurrentVBoxContainer.size.y + CurrentButtons[0].size.y CurrentVBoxContainer.position.y = -CurrentVBoxContainer.size.y / 2.0 var i = 1 for button in CurrentButtons: button.text = "Кнопка " + str(i) button.pressed.connect(func(): print("Button" + str(i))) i = i + 1 CurrentSubViewport.size = CurrentVBoxContainer.get_rect().size CurrentSelectionScreen.position = CurrentSubViewport.size / 2.0 func set_function_buttons(text_buttons: Array, functions: Array) -> void: if len(text_buttons) != len(functions): return visible = true var count_button = min(len(CurrentButtons), len(functions)) for i in range(count_button): CurrentButtons[i].text = text_buttons[i] CurrentButtons[i].pressed.disconnect(CurrentButtons[i].pressed.get_connections()[0]["callable"]) CurrentButtons[i].pressed.connect(functions[i]) CurrentButtons[i].disabled = false CurrentButtons[i].visible = true func set_active(value: bool) -> void: visible = value for button in CurrentButtons: button.disabled = true button.visible = false func is_active() -> bool: return visible func get_size() -> Vector2: return Vector2(CurrentSubViewport.size) func get_aspect() -> float: return CurrentSubViewport.size.aspect()