// Copyright (c) 2026 GeWuYou
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
using GFramework.Game.Abstractions.Setting;
using GFramework.Game.Abstractions.Setting.Data;
using GFramework.Godot.Setting.Data;
using Godot;
namespace GFramework.Godot.Setting;
///
/// Godot本地化设置类,负责应用本地化配置到Godot引擎
///
/// 设置模型
/// 本地化映射表
public class GodotLocalizationSettings(ISettingsModel model, LocalizationMap localizationMap)
: IResetApplyAbleSettings
{
///
/// 应用本地化设置到Godot引擎
///
/// 完成的任务
public Task Apply()
{
var settings = model.GetData();
// 尝试从映射表获取 Godot locale
var locale = localizationMap.LanguageMap.GetValueOrDefault(settings.Language, "en");
// 默认值
TranslationServer.SetLocale(locale);
return Task.CompletedTask;
}
///
/// 重置本地化设置
///
public void Reset()
{
model.GetData().Reset();
}
///
/// 获取本地化设置的数据对象。
/// 该属性提供对本地化设置数据的只读访问。
///
public ISettingsData Data { get; } = model.GetData();
///
/// 获取本地化设置数据的类型。
/// 该属性返回本地化设置数据的具体类型信息。
///
public Type DataType { get; } = typeof(LocalizationSettings);
}