akadoc/Assets/src/RulesDatabase.cs

62 lines
1.2 KiB
C#

using UnityEngine;
using System.IO;
using System.Collections.Generic;
public class RulesDatabase {
public static TwoDA GetTable(string name) {
TwoDA t = null;
if(Get().m_tables.TryGetValue(name, out t)) {
return t;
}
else
return null;
}
public static void SetLocale(string lang) {
m_inst.m_strref = GetTable("locale_"+lang);
}
public static string GetStrRef(int strref) {
RulesDatabase inst = Get();
return inst.m_strref.GetValue(strref, "text");
}
private RulesDatabase() {
m_tables = new Dictionary<string, TwoDA>();
string[] files = Directory.GetFiles(m_folder, "*.2da", SearchOption.AllDirectories);
foreach(string file in files) {
string name = Path.GetFileNameWithoutExtension(file);
m_tables.Add(name, new TwoDA(file));
//Debug.Log ("Found "+name);
}
//Set default locale table
m_tables.TryGetValue("locale_fr", out m_strref);
}
private static RulesDatabase m_inst = null;
private static object m_singlmutex = new Object();
private static RulesDatabase Get() {
lock(m_singlmutex) {
if(m_inst==null)
m_inst = new RulesDatabase();
}
return m_inst;
}
private Dictionary<string, TwoDA> m_tables;
private TwoDA m_strref = null;
private string m_folder = "Assets/rules";
}