mirror of
				https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
				synced 2025-11-04 08:35:41 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
extends Control
 | 
						|
 | 
						|
var config_json := {}
 | 
						|
const RESOURCE_PACK_CONFIG_OPTION_NODE = preload("uid://c5ea03ob6ncq7")
 | 
						|
 | 
						|
signal closed
 | 
						|
 | 
						|
 | 
						|
var selected_index := 0
 | 
						|
var active := false
 | 
						|
 | 
						|
var json_path := ""
 | 
						|
 | 
						|
func open() -> void:
 | 
						|
	if active: return
 | 
						|
	clear_options()
 | 
						|
	spawn_options()
 | 
						|
	show()
 | 
						|
	await get_tree().process_frame
 | 
						|
	%Options.active = true
 | 
						|
	active = true
 | 
						|
 | 
						|
func clear_options() -> void:
 | 
						|
	for i in %Options.options:
 | 
						|
		i.queue_free()
 | 
						|
	%Options.options.clear()
 | 
						|
 | 
						|
func _process(_delta: float) -> void:
 | 
						|
	if Input.is_action_just_pressed("ui_back") and active:
 | 
						|
		close()
 | 
						|
 | 
						|
func spawn_options() -> void:
 | 
						|
	for i in config_json.options:
 | 
						|
		var node = RESOURCE_PACK_CONFIG_OPTION_NODE.instantiate()
 | 
						|
		node.config_name = i
 | 
						|
		if config_json.options[i] is bool:
 | 
						|
			node.values = ["SETTING_OFF", "SETTING_ON"]
 | 
						|
			node.selected_index = int(config_json.options[i])
 | 
						|
			node.is_bool = true
 | 
						|
		else:
 | 
						|
			node.values = config_json.value_keys[i]
 | 
						|
			node.selected_index = config_json.value_keys[i].find(config_json.options[i])
 | 
						|
		%Options.add_child(node)
 | 
						|
		node.value_changed.connect(value_changed)
 | 
						|
		%Options.options.append(node)
 | 
						|
 | 
						|
func value_changed(option: PackConfigOption) -> void:
 | 
						|
	if option.is_bool:
 | 
						|
		config_json.options[option.config_name] = bool(option.selected_index)
 | 
						|
	else:
 | 
						|
		config_json.options[option.config_name] = option.values[option.selected_index]
 | 
						|
	update_json()
 | 
						|
 | 
						|
func update_json() -> void:
 | 
						|
	var file = FileAccess.open(json_path, FileAccess.WRITE)
 | 
						|
	file.store_string(JSON.stringify(config_json, "\t", false))
 | 
						|
	file.close()
 | 
						|
 | 
						|
func close() -> void:
 | 
						|
	ResourceSetter.cache.clear()
 | 
						|
	ResourceSetterNew.cache.clear()
 | 
						|
	Global.level_theme_changed.emit()
 | 
						|
	closed.emit()
 | 
						|
	clear_options()
 | 
						|
	hide()
 | 
						|
	%Options.active = false
 | 
						|
	active = false
 |