99 lines
3.1 KiB
GDScript
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)
|