xiandie/manager/config_manager/global_config.gd

129 lines
3.8 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

class_name GlobalConfig extends Resource
signal streamer_mode_updated
static var DEBUG = false
# 影响事件的 release_stage
# 0:demo
# 1:v1.0正式版
const RELEASE_STAGE := 1
# .res would be binary encoded, .tres is text encoded
const RES_FILE_FORMAT = ".tres"
# Audio bus names
const BUS_MASTER := "Master"
const BUS_GAME_SFX := "game_sfx"
const BUS_DIALOG := "dialog"
const LANGUAGE_OPTIONS = ["简体中文", "English"]
const LOCALE_PREFIX_MAPPING = {"zh": 0, "en": 1}
const CAPTION_OPTIONS_DICT = {0: ["上海话", "普通话"], 1: [""]}
const CAPTION_LOCALES_DICT = {0: ["zh_SH", "zh_CN"], 1: ["en"]}
## layers
# 设置, DebugPanel
const CANVAS_LAYER_SETTINGS = 30
# note
const CANVAS_LAYER_NOTE = 25
const CANVAS_LAYER_MEM_ITEM = 23
const CANVAS_LAYER_UX_PANEL = 22
# dialog 在游戏场景中使用 CANVAS_LAYER_DIALOG
# 在回忆中使用 CANVAS_LAYER_DIALOG_MEM
const CANVAS_LAYER_DIALOG_MEM = 29
const CANVAS_LAYER_DIALOG = 22
# main 场景的 UI 层prop hud、上下mask、notification
const CANVAS_LAYER_UI = 21
# 道具 inspectorprop/local
const CANVAS_LAYER_PROP_INSPECTOR = 20
# ground loader 转场等 mask 层
const CANVAS_LAYER_GROUND_MASK = 14
# 特殊全屏效果(无 shading
const CANVAS_LAYER_EFFECT = 11
# 全屏 shading
const CANVAS_LAYER_SHADING = 10
# 小游戏与特写
const CANVAS_LAYER_LITTLE_GAME = 5
# 前景层
const CANVAS_LAYER_FG = 2
const DIALOG_IGNORE_INPUT = "ignore_input"
# memory layer: 30
const DIALOG_MEM_LAYER = "mem_layer"
const CHARACTER_COLOR_MAP = {
"default": Color.LIGHT_SEA_GREEN,
"吕萍": Color.ORANGE,
"": Color.MEDIUM_SEA_GREEN,
"获得": Color.WHITE,
"小蝶": Color.MEDIUM_SPRING_GREEN,
"小蝉": Color.AQUA,
"陆仁": Color.POWDER_BLUE,
"李氏": Color.SKY_BLUE,
"方瞎子": Color.BURLYWOOD,
"张胖子": Color.DARK_KHAKI,
"王癞子": Color.AQUA,
"吕萍(母)": Color.AQUA,
}
signal current_selected_archive_id_changed
signal auto_save_enabled_changed
signal auto_save_seconds_changed
@export var version: int #存档版本
@export var debug_mode := false # 开启 debug 模式
@export var skip_trailer := false # 跳过 trailer
@export var game_launched_times := 0 # 启动游戏次数
@export var game_total_seconds := 0 # 游戏总时长
@export var game_rounds := 1 # 当前周目数
@export var current_selected_archive_id := -1: # 当前选定存档, -1 为未选择
set(val):
current_selected_archive_id = val
current_selected_archive_id_changed.emit()
@export var auto_save_enabled := true:
set(val):
auto_save_enabled = val
auto_save_enabled_changed.emit()
# 默认 60s 保存一次
@export var auto_save_seconds := 60:
set(val):
auto_save_seconds = val
auto_save_seconds_changed.emit()
# window
@export var window_fullscreen := true
@export var window_top := false
# sound
@export var db_master := linear_to_db(0.7)
@export var db_dialog := linear_to_db(0.7) + Settings.dialog_db_offset
@export var db_game_sfx := linear_to_db(0.7) + Settings.sfx_db_offset
# language
# -1 null; 0 zh; 1 en
@export var language := 0
@export var caption := 0
# 最大范围为 10 秒,精度 0.1
@export var os_wait_time := 3.0
@export var os_auto_end := true
# 绿色/主播模式
@export var streamer_mode := false:
set(val):
if streamer_mode != val:
streamer_mode = val
streamer_mode_updated.emit()
func get_locale_language_name() -> String:
language = wrapi(language, 0, LANGUAGE_OPTIONS.size())
return LANGUAGE_OPTIONS[language]
func get_locale_caption_name() -> String:
language = wrapi(language, 0, LANGUAGE_OPTIONS.size())
var caption_options = CAPTION_OPTIONS_DICT.get(language, [""])
caption = wrapi(caption, 0, caption_options.size())
return caption_options[caption]
func get_locale() -> String:
var locales = CAPTION_LOCALES_DICT.get(language, [""])
caption = wrapi(caption, 0, locales.size())
return locales[caption]