Skillbuch Pagination: 9 Skills pro Seite mit Vor/Zurueck-Navigation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
f007e559b9
commit
ac271ce891
1 changed files with 61 additions and 1 deletions
|
|
@ -5,6 +5,13 @@ extends CanvasLayer
|
||||||
var panel_visible = false
|
var panel_visible = false
|
||||||
var player = null
|
var player = null
|
||||||
|
|
||||||
|
# Pagination
|
||||||
|
const SKILLS_PER_PAGE: int = 9
|
||||||
|
var current_page: int = 0
|
||||||
|
var _page_label: Label = null
|
||||||
|
var _prev_btn: Button = null
|
||||||
|
var _next_btn: Button = null
|
||||||
|
|
||||||
# Drag State
|
# Drag State
|
||||||
var dragging = false
|
var dragging = false
|
||||||
var drag_skill_id: String = ""
|
var drag_skill_id: String = ""
|
||||||
|
|
@ -15,6 +22,47 @@ var drag_icon: TextureRect = null
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
panel.visible = false
|
panel.visible = false
|
||||||
|
_create_pagination_bar()
|
||||||
|
|
||||||
|
func _create_pagination_bar():
|
||||||
|
var vbox = $Panel/VBoxContainer
|
||||||
|
var nav = HBoxContainer.new()
|
||||||
|
nav.alignment = BoxContainer.ALIGNMENT_CENTER
|
||||||
|
nav.add_theme_constant_override("separation", 12)
|
||||||
|
|
||||||
|
_prev_btn = Button.new()
|
||||||
|
_prev_btn.text = "< Zurück"
|
||||||
|
_prev_btn.add_theme_font_size_override("font_size", 13)
|
||||||
|
_prev_btn.pressed.connect(_on_prev_page)
|
||||||
|
nav.add_child(_prev_btn)
|
||||||
|
|
||||||
|
_page_label = Label.new()
|
||||||
|
_page_label.add_theme_font_size_override("font_size", 13)
|
||||||
|
_page_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||||
|
_page_label.custom_minimum_size = Vector2(80, 0)
|
||||||
|
nav.add_child(_page_label)
|
||||||
|
|
||||||
|
_next_btn = Button.new()
|
||||||
|
_next_btn.text = "Weiter >"
|
||||||
|
_next_btn.add_theme_font_size_override("font_size", 13)
|
||||||
|
_next_btn.pressed.connect(_on_next_page)
|
||||||
|
nav.add_child(_next_btn)
|
||||||
|
|
||||||
|
vbox.add_child(nav)
|
||||||
|
|
||||||
|
func _on_prev_page():
|
||||||
|
current_page = max(0, current_page - 1)
|
||||||
|
_refresh_skills()
|
||||||
|
|
||||||
|
func _on_next_page():
|
||||||
|
var total_pages = _get_total_pages()
|
||||||
|
current_page = min(total_pages - 1, current_page + 1)
|
||||||
|
_refresh_skills()
|
||||||
|
|
||||||
|
func _get_total_pages() -> int:
|
||||||
|
if player == null:
|
||||||
|
return 1
|
||||||
|
return max(1, ceili(float(player.available_skills.size()) / SKILLS_PER_PAGE))
|
||||||
|
|
||||||
func setup(p):
|
func setup(p):
|
||||||
player = p
|
player = p
|
||||||
|
|
@ -23,6 +71,7 @@ func toggle():
|
||||||
panel_visible = !panel_visible
|
panel_visible = !panel_visible
|
||||||
panel.visible = panel_visible
|
panel.visible = panel_visible
|
||||||
if panel_visible:
|
if panel_visible:
|
||||||
|
current_page = 0
|
||||||
_refresh_skills()
|
_refresh_skills()
|
||||||
|
|
||||||
func _refresh_skills():
|
func _refresh_skills():
|
||||||
|
|
@ -32,7 +81,18 @@ func _refresh_skills():
|
||||||
for child in skill_list.get_children():
|
for child in skill_list.get_children():
|
||||||
child.queue_free()
|
child.queue_free()
|
||||||
|
|
||||||
for skill in player.available_skills:
|
# Pagination-Grenzen berechnen
|
||||||
|
var total_pages = _get_total_pages()
|
||||||
|
var start = current_page * SKILLS_PER_PAGE
|
||||||
|
var end = min(start + SKILLS_PER_PAGE, player.available_skills.size())
|
||||||
|
var page_skills = player.available_skills.slice(start, end)
|
||||||
|
|
||||||
|
# Navigations-Buttons und Label aktualisieren
|
||||||
|
_page_label.text = "Seite %d / %d" % [current_page + 1, total_pages]
|
||||||
|
_prev_btn.disabled = current_page == 0
|
||||||
|
_next_btn.disabled = current_page >= total_pages - 1
|
||||||
|
|
||||||
|
for skill in page_skills:
|
||||||
var is_locked: bool = skill.get("locked", false)
|
var is_locked: bool = skill.get("locked", false)
|
||||||
|
|
||||||
# Hintergrund-Panel für Lesbarkeit
|
# Hintergrund-Panel für Lesbarkeit
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue