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)