class_name LuneTabBar extends HBoxContainer ## Tabs with a bronze underline for the open one. `select` changes only the display; ## `tab_changed` fires on player input. signal tab_changed(index: int) var current: int = 0 var tabs: Array[Button] = [] var _group := ButtonGroup.new() func _init() -> void: add_theme_constant_override("separation", 2) func add_tab(title: String, tooltip_title: String = "", tooltip_text: String = "") -> Button: var tab := LuneUiTheme.button(title, "HudTab", self) tab.toggle_mode = true tab.button_group = _group var index: int = tabs.size() tab.pressed.connect(func() -> void: current = index tab_changed.emit(index)) if not tooltip_title.is_empty(): LuneTooltip.attach(tab, func() -> Dictionary: return {"title": tooltip_title, "text": tooltip_text}) tabs.append(tab) if tabs.size() == 1: tab.set_pressed_no_signal(true) return tab func select(index: int) -> void: current = clampi(index, 0, tabs.size() - 1) for i: int in range(tabs.size()): tabs[i].set_pressed_no_signal(i == current)