using UnityEngine;
using OctoCore.Localization;
using UnityEngine.InputSystem;
namespace Unheimlich.Tools
{
///
/// Simple debug script to switch language at runtime.
/// Attach to any GameObject and press keys to change language.
///
public class LanguageSwitcher : MonoBehaviour
{
[Header("Info")]
[Tooltip("Current language")]
[SerializeField] private OctoLanguages _currentLanguage;
void Start()
{
if (OctoCore.OctoCore.Instance != null && OctoCore.OctoCore.Instance.Localization != null)
{
_currentLanguage = OctoCore.OctoCore.Instance.Localization.WrittenLanguage;
UnityEngine.Debug.Log($"[LanguageSwitcher] Current language: {_currentLanguage}");
UnityEngine.Debug.Log($"[LanguageSwitcher] Press F1 for English, F2 for French");
}
}
void Update()
{
if (OctoCore.OctoCore.Instance == null || OctoCore.OctoCore.Instance.Localization == null)
return;
if (Keyboard.current == null)
return;
if (Keyboard.current.f1Key.wasPressedThisFrame)
{
SetLanguage(OctoLanguages.English);
}
else if (Keyboard.current.f2Key.wasPressedThisFrame)
{
SetLanguage(OctoLanguages.French);
}
}
private void SetLanguage(OctoLanguages language)
{
OctoCore.OctoCore.Instance.Localization.SetLanguageWritten(language);
_currentLanguage = language;
UnityEngine.Debug.Log($"[LanguageSwitcher] Language changed to: {language}");
}
void OnGUI()
{
// Display current language in top-left corner
if (OctoCore.OctoCore.Instance != null && OctoCore.OctoCore.Instance.Localization != null)
{
GUI.color = Color.yellow;
GUI.Label(new Rect(10, 10, 300, 30), $"Language: {_currentLanguage}");
GUI.Label(new Rect(10, 30, 300, 30), $"[F1] EN | [F2] FR");
GUI.color = Color.white;
}
}
}
}