|
| 1 | +extends Node |
| 2 | + |
| 3 | + |
| 4 | +var is_dark:String = "true" |
| 5 | + |
| 6 | +var mode:String = "txt" |
| 7 | + |
| 8 | +signal code_light_changed(enabled: bool) |
| 9 | + |
| 10 | +var title_font:String = "res://asset/SmileySans-Oblique.ttf" |
| 11 | +var main_font:String = "res://asset/SmileySans-Oblique.ttf" |
| 12 | +var music_path:String = "" |
| 13 | +var Dark_icon_path:String = "res://asset/item/dark.png" |
| 14 | +var Light_icon_path:String = "res://asset/item/light.png" |
| 15 | + |
| 16 | +var main_color = Color(0.145, 0.478, 0.439) |
| 17 | +var back_color = Color(0.161, 0.161, 0.161) |
| 18 | +var title_font_color = Color(1.0, 1.0, 1.0) |
| 19 | +var main_font_color = Color(1.0, 1.0, 1.0) |
| 20 | + |
| 21 | +var save_cfg_path:String = "C://Users/sodium_settins" |
| 22 | + |
| 23 | +var sound_db:float = 0 |
| 24 | + |
| 25 | +var code_light:bool = false: |
| 26 | + set(value): |
| 27 | + if code_light != value: |
| 28 | + code_light = value |
| 29 | + code_light_changed.emit(code_light) |
| 30 | + |
| 31 | +var music_play:bool = true |
| 32 | + |
| 33 | +var minimap:bool = true |
| 34 | + |
| 35 | +var db:float = 0.0 |
| 36 | + |
| 37 | +var font_size: int = 16.0 |
| 38 | + |
| 39 | +# 音量范围 (转换为线性值) |
| 40 | +const MIN_DB = -30.0 # 最小音量对应的分贝值 |
| 41 | +const MAX_DB = 0.0 # 最大音量对应的分贝值 |
| 42 | + |
| 43 | +var master_volume_linear := 0.8: |
| 44 | + set(value): |
| 45 | + master_volume_linear = clamp(value, 0.0, 1.0) |
| 46 | + # 转换为分贝并设置到音频总线 |
| 47 | + var db_volume = linear_to_db(master_volume_linear) |
| 48 | + AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), db_volume) |
| 49 | + # 保存设置 |
| 50 | + save_volume() |
| 51 | + |
| 52 | +func _ready(): |
| 53 | + load_volume() |
| 54 | + load_settings() |
| 55 | + |
| 56 | +func save_volume(): |
| 57 | + var config = ConfigFile.new() |
| 58 | + config.set_value("audio", "master_volume", master_volume_linear) |
| 59 | + config.save("user://settings.cfg") |
| 60 | + |
| 61 | +func load_volume(): |
| 62 | + var config = ConfigFile.new() |
| 63 | + if config.load("user://settings.cfg") == OK: |
| 64 | + master_volume_linear = config.get_value("audio", "master_volume", 0.8) |
| 65 | + |
| 66 | + |
| 67 | +func load_settings(): |
| 68 | + var config = ConfigFile.new() |
| 69 | + var result = config.load(save_cfg_path) |
| 70 | + if not FileAccess.file_exists(save_cfg_path): |
| 71 | + push_error("配置文件不存在: ", save_cfg_path) |
| 72 | + save_settings() |
| 73 | + |
| 74 | + if result != OK: |
| 75 | + printerr("erro on load settings cfg!") |
| 76 | + title_font = "res://asset/SmileySans-Oblique.ttf" |
| 77 | + main_font = "res://asset/SmileySans-Oblique.ttf" |
| 78 | + music_path = "" |
| 79 | + Dark_icon_path = "res://asset/item/dark.png" |
| 80 | + Light_icon_path = "res://asset/item/light.png" |
| 81 | + |
| 82 | + main_color = Color(0.145, 0.478, 0.439) |
| 83 | + back_color = Color(0.161, 0.161, 0.161) |
| 84 | + title_font_color = Color(1.0, 1.0, 1.0) |
| 85 | + main_font_color = Color(1.0, 1.0, 1.0) |
| 86 | + else: |
| 87 | + title_font = config.get_value("Settings", "title_font", "res://asset/SmileySans-Oblique.ttf") |
| 88 | + main_font = config.get_value("Settings", "main_font", "res://asset/SmileySans-Oblique.ttf") |
| 89 | + music_path = config.get_value("Settings", "music_path", "res://asset/SmileySans-Oblique.ttf") |
| 90 | + |
| 91 | + main_color = config.get_value("Settings", "main_color", Color(0.145, 0.478, 0.439)) |
| 92 | + back_color = config.get_value("Settings", "back_color", Color(0.161, 0.161, 0.161)) |
| 93 | + title_font_color = config.get_value("Settings", "title_font_color", Color(1.0, 1.0, 1.0)) |
| 94 | + main_font_color = config.get_value("Settings", "main_font_color", Color(1.0, 1.0, 1.0)) |
| 95 | + |
| 96 | + |
| 97 | +func save_settings(): |
| 98 | + var config = ConfigFile.new() |
| 99 | + config.set_value("Settings", "main_color", Global.main_color) |
| 100 | + config.set_value("Settings", "back_color", Global.back_color) |
| 101 | + config.set_value("Settings", "title_font_color", Global.title_font_color) |
| 102 | + config.set_value("Settings", "main_font_color", Global.main_font_color) |
| 103 | + config.set_value("Settings", "is_dark", Global.is_dark) |
| 104 | + config.set_value("Settings", "title_font_color", Global.title_font_color) |
| 105 | + config.set_value("Settings", "code_light", Global.code_light) |
| 106 | + config.set_value("Settings", "music_play", Global.music_play) |
| 107 | + config.set_value("Settings", "minimap", Global.minimap) |
| 108 | + config.set_value("Settings", "title_font", Global.title_font) |
| 109 | + config.set_value("Settings", "main_font", Global.main_font) |
| 110 | + config.set_value("Settings", "music_path", Global.music_path) |
| 111 | + config.set_value("Settings", "font_size", Global.font_size) |
| 112 | + |
| 113 | + config.save(Global.save_cfg_path) |
| 114 | + |
| 115 | + |
| 116 | +func is_file_of_type(file_path: String, expected_extension: String) -> bool: |
| 117 | + return file_path.get_extension().to_lower() == expected_extension.to_lower() |
0 commit comments