cultists_of_campath/01 - Menus/01 - Main Menu/main_menu.gd
2025-11-22 21:04:34 +01:00

99 lines
3.1 KiB
GDScript

extends Node2D
var menu_item
var conf_mm
var conf_cat
var item_names = []
var item_proper_names = []
var categories
var pixel_x
var pixel_y
var ui_scale = 1
func _enter_tree() -> void:
conf_mm = ConfigFile.new()
conf_mm.load("res://02 - Configurations/campaign/main_menu.ini")
conf_cat = ConfigFile.new()
conf_cat.load("res://02 - Configurations/campaign/categories.ini")
print("main_menu:_enter_tree:1 " + str(conf_mm.get_sections()))
categories = []
pixel_x = get_viewport_rect().size[0]
pixel_y = get_viewport_rect().size[1]
if pixel_x + pixel_y > 2900:
ui_scale = 1
else:
ui_scale = 0.7
print("main_menu:_enter_tree:2 " + str(pixel_x) + " " + str(pixel_y))
for i in conf_mm.get_sections():
categories = categories + [i]
for i in categories:
#print(i)
var button = OptionButton.new()
button.text = conf_mm.get_value(i,"name")
button.name = i
button.custom_minimum_size = Vector2(320,64)
button.connect("item_selected",self.item_selected.bind(button))
button.allow_reselect = true
print("main_menu:_enter_tree:3 " + str(conf_mm.get_sections()))
for j in conf_mm.get_value(button.name,"items",[]):
item_names = item_names + [j]
item_proper_names = item_proper_names + [conf_cat.get_value(j,"name","")]
print("main_menu:_enter_tree:3 ")
button.add_item(conf_cat.get_value(j,"name",""))
%container.add_child(button)
set_menu_items()
func item_selected(k,tab):
print("main_menu:select_category:1 " + str(tab.get_item_text(k)))
menu_item = load("res://01 - Menus/02 - Selector/selector.tscn").instantiate()
print("main_menu:select_category:2 " + str(item_names))
menu_item.category = item_names[item_proper_names.find(tab.get_item_text(k))]
add_child(menu_item)
menu_item.set_menu_items(pixel_x,pixel_y,ui_scale)
func remove_tabs(tab):
remove_child.call_deferred(tab)
func _on_exit_button_up() -> void:
get_tree().quit()
func set_menu_items():
print("main_menu:set_menu_items:1 " + str(pixel_x) + " " + str(pixel_y))
%scroll.size.y = pixel_y - (256 * ui_scale)
%scroll.position.y = 128 * ui_scale
%campaign_manager.position.y = pixel_y - 192 * ui_scale
%exit.position.y = pixel_y - 96 * ui_scale
%ui_main_menu.size.y = pixel_y
%ui_background.size.y = pixel_y
%ui_background.size.x = pixel_x
if pixel_x < pixel_y: #mobile
%ui_main_menu.size.x = pixel_x
for i in [%scroll,%exit,%campaign_manager]:
i.scale = Vector2(ui_scale,ui_scale)
i.size.x = pixel_x/ui_scale - 128
i.position.x = 64*ui_scale
else:
%ui_main_menu.size.x = 512.0 * ui_scale
for i in [%scroll,%exit,%campaign_manager]:
i.scale = Vector2(ui_scale,ui_scale)
i.size.x = 448
i.position.x = 32 * ui_scale
func _process(_delta: float) -> void:
if pixel_x != get_viewport_rect().size[0] or pixel_y != get_viewport_rect().size[1]:
pixel_x = get_viewport_rect().size[0]
pixel_y = get_viewport_rect().size[1]
if pixel_x + pixel_y > 3000:
ui_scale = 1
else:
ui_scale = 0.7
if menu_item:
menu_item.set_menu_items(pixel_x,pixel_y,ui_scale)
set_menu_items()
func _on_campaign_manager_button_up() -> void:
var cm = load("res://01 - Menus/05 - Campaign Manager/campaign_manager.tscn").instantiate()
add_child(cm)