summaryrefslogtreecommitdiff
path: root/Thronefall_1_0/Thronefall/I2.Loc/TermData.cs
blob: 682752541f13b69cf73972cb500bd97d7f6a1540 (plain)
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
using System;
using System.Collections.Generic;
using UnityEngine;

namespace I2.Loc;

[Serializable]
public class TermData
{
	public string Term = string.Empty;

	public eTermType TermType;

	[NonSerialized]
	public string Description;

	public string[] Languages = Array.Empty<string>();

	public byte[] Flags = Array.Empty<byte>();

	[SerializeField]
	private string[] Languages_Touch;

	public string GetTranslation(int idx, string specialization = null, bool editMode = false)
	{
		string text = Languages[idx];
		if (text != null)
		{
			text = SpecializationManager.GetSpecializedText(text, specialization);
			if (!editMode)
			{
				text = text.Replace("[i2nt]", "").Replace("[/i2nt]", "");
			}
		}
		return text;
	}

	public void SetTranslation(int idx, string translation, string specialization = null)
	{
		Languages[idx] = SpecializationManager.SetSpecializedText(Languages[idx], translation, specialization);
	}

	public void RemoveSpecialization(string specialization)
	{
		for (int i = 0; i < Languages.Length; i++)
		{
			RemoveSpecialization(i, specialization);
		}
	}

	public void RemoveSpecialization(int idx, string specialization)
	{
		string text = Languages[idx];
		if (!(specialization == "Any") && text.Contains("[i2s_" + specialization + "]"))
		{
			Dictionary<string, string> specializations = SpecializationManager.GetSpecializations(text);
			specializations.Remove(specialization);
			Languages[idx] = SpecializationManager.SetSpecializedText(specializations);
		}
	}

	public bool IsAutoTranslated(int idx, bool IsTouch)
	{
		return (Flags[idx] & 2) > 0;
	}

	public void Validate()
	{
		int num = Mathf.Max(Languages.Length, Flags.Length);
		if (Languages.Length != num)
		{
			Array.Resize(ref Languages, num);
		}
		if (Flags.Length != num)
		{
			Array.Resize(ref Flags, num);
		}
		if (Languages_Touch == null)
		{
			return;
		}
		for (int i = 0; i < Mathf.Min(Languages_Touch.Length, num); i++)
		{
			if (string.IsNullOrEmpty(Languages[i]) && !string.IsNullOrEmpty(Languages_Touch[i]))
			{
				Languages[i] = Languages_Touch[i];
				Languages_Touch[i] = null;
			}
		}
		Languages_Touch = null;
	}

	public bool IsTerm(string name, bool allowCategoryMistmatch)
	{
		if (!allowCategoryMistmatch)
		{
			return name == Term;
		}
		return name == LanguageSourceData.GetKeyFromFullTerm(Term);
	}

	public bool HasSpecializations()
	{
		for (int i = 0; i < Languages.Length; i++)
		{
			if (!string.IsNullOrEmpty(Languages[i]) && Languages[i].Contains("[i2s_"))
			{
				return true;
			}
		}
		return false;
	}

	public List<string> GetAllSpecializations()
	{
		List<string> list = new List<string>();
		for (int i = 0; i < Languages.Length; i++)
		{
			SpecializationManager.AppendSpecializations(Languages[i], list);
		}
		return list;
	}
}