aboutsummaryrefslogtreecommitdiff
path: root/Assets/Scripts/Localisation/CSVLoader.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/Localisation/CSVLoader.cs')
-rw-r--r--Assets/Scripts/Localisation/CSVLoader.cs68
1 files changed, 68 insertions, 0 deletions
diff --git a/Assets/Scripts/Localisation/CSVLoader.cs b/Assets/Scripts/Localisation/CSVLoader.cs
new file mode 100644
index 0000000..6805761
--- /dev/null
+++ b/Assets/Scripts/Localisation/CSVLoader.cs
@@ -0,0 +1,68 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text.RegularExpressions;
+using UnityEngine;
+
+public class CSVLoader
+{
+ //Reference file;
+ private TextAsset csvFile;
+ private char lineSeperator = '\n';
+ private char surrond = '"';
+ private string[] fieldSeperator = { "\", \"" };
+
+ public void LoadCSV()
+ {
+ csvFile = Resources.Load<TextAsset>("localisation");
+ }
+
+ public Dictionary<string, string> GetDictionaryValues(string attributeID)
+ {
+ Dictionary<string, string> dictionary = new Dictionary<string, string>();
+
+ string[] lines = csvFile.text.Split(lineSeperator);
+
+ int attributeIndex = -1;
+
+ string[] headers = lines[0].Split(fieldSeperator, StringSplitOptions.None);
+
+ for(int i=0; i<headers.Length; i++)
+ {
+ if(headers[i].Contains(attributeID))
+ {
+ attributeIndex = i;
+ break;
+ }
+ }
+
+ Regex CSVParser = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
+
+ for(int i=1; i<lines.Length; i++)
+ {
+ string line = lines[i];
+
+ string[] fields = CSVParser.Split(line);
+
+ for(int f=0; f<fields.Length; f++)
+ {
+ fields[f] = fields[f].TrimStart(' ', surrond);
+ fields[f] = fields[f].TrimEnd(surrond);
+ }
+
+ if(fields.Length > attributeIndex)
+ {
+ var key = fields[0];
+
+ if (dictionary.ContainsKey(key)) { continue; }
+
+ var value = fields[attributeIndex];
+
+ dictionary.Add(key, value);
+ }
+ }
+
+ return dictionary;
+ }
+
+}