-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathLocSystem.cs
83 lines (72 loc) · 2.36 KB
/
LocSystem.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*************************************
* © © © © © © © © © *
* LocSystem.cs *
* Created by: TheFallender *
* Created on: 27/02/2021 (dd/mm/yy) *
* © © © © © © © © © *
*************************************/
using UnityEngine;
namespace UniLoc {
public class LocSystem : MonoBehaviour {
//Instance
private static LocSystem instance = null;
public static LocSystem Instance {
get {
return instance;
}
}
//Event
public delegate void LanguageChangeEvent (UniLocLangs language);
public LanguageChangeEvent OnLanguageChanged;
//Language Asset
[SerializeField]
private LocAsset locAsset;
public LocAsset LocAsset {
get {
return Instance.locAsset;
}
}
public void SetLocAsset (LocAsset asset) {
locAsset = asset;
}
//Current language
private UniLocLangs currentLang = UniLocLangs.English;
public UniLocLangs CurrentLang {
get {
return Instance.currentLang;
}
}
//Singleton
private void Awake () {
if (instance != null) {
Destroy(this);
} else {
instance = this;
DontDestroyOnLoad(this);
}
}
//Event call: Language Enum
public virtual void ChangeLanguage (UniLocLangs language) {
currentLang = language;
OnLanguageChanged?.Invoke(currentLang);
}
//Event call: Language String
public virtual void ChangeLanguage (string language) {
currentLang = String2Lang(language);
OnLanguageChanged?.Invoke(currentLang);
}
//Event call: Language Index Position in available langs
public virtual void ChangeLanguage (int languageIndex) {
currentLang = LocAsset.availableLangs[languageIndex];
OnLanguageChanged?.Invoke(currentLang);
}
//String to UniLocLangs
public static UniLocLangs String2Lang (string lang) {
return (UniLocLangs) System.Enum.Parse(
typeof(UniLocLangs),
lang,
true
);
}
}
}