Files
FueraDeEscala/Assets/Game Kit Controller/Scripts/Localization System/skillsLocalizationManager.cs
Robii Aragon fd87a6ffd5 add ckg
plantilla base para movimiento básico
2026-02-05 05:07:55 -08:00

318 lines
7.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace GKC.Localization
{
public class skillsLocalizationManager : languageLocalizationManager
{
//static fields
public static Dictionary<string, string> currentLocalization;
public static bool localizationInitialized;
public static localizationFileLoader newLocalizationFileLoader;
public static bool languageLocated;
public static string fileNameValue;
public static string fileFormatValue;
public static string currentFilePathValue;
public static bool localizationEnabledValue;
public static bool useResourcesPathValue;
public static bool languageFileNotFound;
void Awake ()
{
localizationInitialized = false;
localizationEnabledValue = false;
useResourcesPathValue = false;
languageFileNotFound = false;
checkFilePathValues ();
}
public void checkFilePathValues ()
{
fileNameValue = fileName;
fileFormatValue = fileFormat;
localizationEnabledValue = localizationEnabled;
useResourcesPathValue = isUseResourcesPathActive ();
currentFilePathValue = getCurrentFilePath ();
}
public override void updateFileName ()
{
checkFilePathValues ();
checkIfLanguageFileExists ();
addLanguageListToNewLocalizationFile ();
}
public static void updateLocalizationFile ()
{
newLocalizationFileLoader = new localizationFileLoader ();
string newFilePath = "";
if (useResourcesPathValue) {
newFilePath = fileNameValue;
} else {
newFilePath = currentFilePathValue + fileNameValue + fileFormatValue;
}
newLocalizationFileLoader.loadFile (newFilePath, useResourcesPathValue);
string currentLanguage = GKC_Utils.getCurrentLanguage ();
updateDictionary (currentLanguage);
localizationInitialized = true;
}
public static void updateDictionary (string currentLanguage)
{
currentLocalization = newLocalizationFileLoader.GetDictionaryValues (currentLanguage);
languageLocated = currentLocalization != null;
}
public static string GetLocalizedValue (string key)
{
if (!localizationEnabledValue) {
return key;
}
if (languageFileNotFound) {
return key;
}
if (!localizationInitialized) {
string newFilePath = "";
if (useResourcesPathValue) {
newFilePath = fileNameValue;
} else {
newFilePath = currentFilePathValue + fileNameValue + fileFormatValue;
}
languageFileNotFound = !languageFileExists (newFilePath, useResourcesPathValue, fileNameValue);
if (languageFileNotFound) {
return key;
} else {
updateLocalizationFile ();
}
}
if (!languageLocated) {
return key;
}
string value = key;
currentLocalization.TryGetValue (key, out value);
if (value == null) {
value = key;
}
return value;
}
//Editor Functions
public override Dictionary<string, string> getDictionaryForEditor ()
{
updateLocalizationFileFromEditor ();
return currentLocalization;
}
public override void updateLocalizationFileFromEditor ()
{
newLocalizationFileLoader = new localizationFileLoader ();
string newFilePath = "";
if (isUseResourcesPathActive ()) {
newFilePath = fileName;
} else {
newFilePath = getCurrentFilePath () + fileName + fileFormat;
}
newLocalizationFileLoader.loadFile (newFilePath, isUseResourcesPathActive ());
updateDictionary (currentLanguageToEdit);
if (currentLocalization == null) {
updateFileName ();
}
}
public override string GetLocalizedValueFromEditor (string key)
{
updateLocalizationFileFromEditor ();
string value = key;
currentLocalization.TryGetValue (key, out value);
return value;
}
public override void addKey (string key, string value)
{
if (value == null || value == "") {
return;
}
if (value.Contains ("\"")) {
value.Replace ('"', '\"');
}
if (newLocalizationFileLoader == null) {
newLocalizationFileLoader = new localizationFileLoader ();
}
string newFilePath = "";
if (isUseResourcesPathActive ()) {
newFilePath = fileName;
} else {
newFilePath = getCurrentFilePath () + fileName + fileFormat;
}
newLocalizationFileLoader.loadFile (newFilePath, isUseResourcesPathActive ());
newLocalizationFileLoader.addLanguageListToNewLocalizationFile (newFilePath);
newLocalizationFileLoader.loadFile (newFilePath, isUseResourcesPathActive ());
newLocalizationFileLoader.addKey (newFilePath, key, value, currentLanguageToEdit);
newLocalizationFileLoader.loadFile (newFilePath, isUseResourcesPathActive ());
updateDictionary (currentLanguageToEdit);
}
public override void removeKey (string key)
{
if (newLocalizationFileLoader == null) {
newLocalizationFileLoader = new localizationFileLoader ();
}
string newFilePath = getCurrentFilePath () + fileName + fileFormat;
newLocalizationFileLoader.loadFile (newFilePath, isUseResourcesPathActive ());
newLocalizationFileLoader.removeKey (newFilePath, newFilePath, key, isUseResourcesPathActive ());
newLocalizationFileLoader.loadFile (newFilePath, isUseResourcesPathActive ());
updateDictionary (currentLanguageToEdit);
}
public override void addLanguage (string languageName)
{
if (languageName == null || languageName == "") {
return;
}
if (languageName.Contains ("\"")) {
languageName.Replace ('"', '\"');
}
if (newLocalizationFileLoader == null) {
newLocalizationFileLoader = new localizationFileLoader ();
}
string newFilePath = "";
if (isUseResourcesPathActive ()) {
newFilePath = fileName;
} else {
newFilePath = getCurrentFilePath () + fileName + fileFormat;
}
newLocalizationFileLoader.loadFile (newFilePath, isUseResourcesPathActive ());
newLocalizationFileLoader.addLanguage (newFilePath, languageName);
newLocalizationFileLoader.loadFile (newFilePath, isUseResourcesPathActive ());
updateDictionary (currentLanguageToEdit);
}
public override void addLanguageListToNewLocalizationFile ()
{
if (newLocalizationFileLoader == null) {
newLocalizationFileLoader = new localizationFileLoader ();
}
string newFilePath = "";
if (isUseResourcesPathActive ()) {
newFilePath = fileName;
} else {
newFilePath = getCurrentFilePath () + fileName + fileFormat;
}
newLocalizationFileLoader.loadFile (newFilePath, isUseResourcesPathActive ());
newLocalizationFileLoader.addLanguageListToNewLocalizationFile (newFilePath);
}
public override void updateLocalizationFileExternally ()
{
if (!localizationEnabled) {
return;
}
string newFilePath = "";
if (isUseResourcesPathActive ()) {
newFilePath = fileName;
} else {
newFilePath = getCurrentFilePath () + fileName + fileFormat;
}
bool languageFileNotFoundResult = !languageFileExists (newFilePath, isUseResourcesPathActive (), fileName);
if (languageFileNotFoundResult) {
if (showDebugPrint) {
print ("localization file not found, cancelling action");
}
return;
}
updateLocalizationFile ();
updateSystemElements ();
checkEventsOnLanguageChange ();
}
void updateSystemElements ()
{
}
}
}