summaryrefslogtreecommitdiff
path: root/WorldlineKeepers/Assets/Scripts/Data
diff options
context:
space:
mode:
Diffstat (limited to 'WorldlineKeepers/Assets/Scripts/Data')
-rw-r--r--WorldlineKeepers/Assets/Scripts/Data/CSVReader.cs55
-rw-r--r--WorldlineKeepers/Assets/Scripts/Data/CSVReader.cs.meta11
-rw-r--r--WorldlineKeepers/Assets/Scripts/Data/DataManager.cs19
3 files changed, 83 insertions, 2 deletions
diff --git a/WorldlineKeepers/Assets/Scripts/Data/CSVReader.cs b/WorldlineKeepers/Assets/Scripts/Data/CSVReader.cs
new file mode 100644
index 0000000..312eba8
--- /dev/null
+++ b/WorldlineKeepers/Assets/Scripts/Data/CSVReader.cs
@@ -0,0 +1,55 @@
+using JetBrains.Annotations;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Net.Mime;
+using System.Reflection;
+using UnityEngine;
+using yutokun;
+using static UnityEngine.Rendering.DebugUI;
+
+namespace WK.Data
+{
+
+ public class CSVReader
+ {
+ private static Dictionary<string/*key*/, int/*index*/> m_KeyMapping = new Dictionary<string, int>();
+ private static List<List<string>> m_Rows = new List<List<string>>();
+
+ public static List<T> Read<T>(string content) where T : new()
+ {
+ m_KeyMapping.Clear();
+ m_Rows.Clear();
+
+ m_Rows = CSVParser.LoadFromString(content);
+ // µÚÒ»ÐÐÊÇkey
+ List<string> keys = m_Rows[0];
+ for (int i = 0; i < keys.Count; ++i)
+ {
+ m_KeyMapping.Add(keys[i], i);
+ }
+ List<T> result = new List<T>();
+ Type type = typeof(T);
+ for (int i = 1; i < m_Rows.Count; ++i)
+ {
+ if (m_Rows[i][0][0] == '#') // ×¢ÊÍ
+ continue;
+ List<string> row = m_Rows[i];
+ T obj = new T();
+ foreach(var key in m_KeyMapping)
+ {
+ int index = key.Value;
+ var fieldInfo = type.GetField(key.Key);
+ if(fieldInfo != null)
+ {
+ fieldInfo.SetValue(obj, Convert.ChangeType(row[index], fieldInfo.FieldType));
+ }
+ }
+ result.Add(obj);
+ }
+ return result;
+ }
+
+ }
+
+} \ No newline at end of file
diff --git a/WorldlineKeepers/Assets/Scripts/Data/CSVReader.cs.meta b/WorldlineKeepers/Assets/Scripts/Data/CSVReader.cs.meta
new file mode 100644
index 0000000..52670ce
--- /dev/null
+++ b/WorldlineKeepers/Assets/Scripts/Data/CSVReader.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f6b35022c04390a46beb2b27711a7950
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/WorldlineKeepers/Assets/Scripts/Data/DataManager.cs b/WorldlineKeepers/Assets/Scripts/Data/DataManager.cs
index e56c80b..a3d1257 100644
--- a/WorldlineKeepers/Assets/Scripts/Data/DataManager.cs
+++ b/WorldlineKeepers/Assets/Scripts/Data/DataManager.cs
@@ -9,8 +9,8 @@ namespace WK.Data
public class DataManager : Singleton<DataManager>
{
- private Dictionary<string/*uid*/, CharacterStatsMetadata> m_CharacterStatsMetadata;
- private Dictionary<string/*uid*/, BuffMetadata> m_BuffMetadata;
+ private Dictionary<string/*uid*/, CharacterStatsMetadata> m_CharacterStatsMetadata = new Dictionary<string, CharacterStatsMetadata>();
+ private Dictionary<string/*uid*/, BuffMetadata> m_BuffMetadata = new Dictionary<string, BuffMetadata>();
public CharacterStatsMetadata GetCharacterStats(string uid)
{
@@ -32,6 +32,21 @@ namespace WK.Data
return null;
}
+ public void Load()
+ {
+ LoadDefaultStats();
+ }
+
+ private void LoadDefaultStats()
+ {
+ TextAsset text = ResourceManager.Instance.LoadAsset<TextAsset>(StaticDefine.StatsFilePath);
+ List<CharacterStatsMetadata> stats = CSVReader.Read<CharacterStatsMetadata>(text.text);
+ for(int i = 0; i < stats.Count; ++i)
+ {
+ m_CharacterStatsMetadata.Add(stats[i].uid, stats[i]);
+ }
+ }
+
}
} \ No newline at end of file