/// <summary> /// 姿勢以下を持つテーブルを取得する /// </summary> /// <param name="charName">キャラクタ名</param> /// <returns>姿勢以下を持つテーブル</returns> private DicTable getCharPosesTable(string charName) { DicTable charTable = m_rootTable["characters"] as DicTable; if (charTable == null) { return(null); } DicTable nameTable = charTable[charName] as DicTable; if (nameTable == null) { return(null); } DicTable poseTable = nameTable["poses"] as DicTable; if (poseTable == null) { return(null); } return(poseTable); }
/// <summary> /// 辞書を前のものに戻す /// </summary> public void PopDic() { if (m_stack.Peek() != null) { m_rootTable = m_stack.Pop(); } }
/// <summary> /// 指定したキーとテーブルから子キーのリストを作成し返す /// </summary> /// <param name="key">キー 例:"stages"</param> /// <param name="rootTable">キーを探すテーブル</param> /// <returns>キーリスト</returns> private List <string> getKeyList(string key, DicTable rootTable) { List <string> keyList = new List <string>(); if (rootTable == null) { return(keyList); //空を返す } DicTable table = null; foreach (string k in rootTable.Keys) { if (k == key) { table = (DicTable)rootTable[key]; break; } } if (table == null) { //見つからなかった return(keyList); //空を返す } foreach (string k in table.Keys) { keyList.Add(k); } keyList.Sort(); return(keyList); }
/// <summary> /// 配列を前のものに戻す /// </summary> public void PopArray() { if (m_stack.Peek() != null) { this.m_rootTable = m_stack.Pop(); this.m_arrayNumber = m_arrayValStack.Pop(); } }
/// <summary> /// 配列を追加する /// </summary> public void PushArray() { DicTable table = new DicTable(); m_stack.Push(table); m_arrayValStack.Push(m_arrayNumber); m_arrayNumber = 0; }
/// <summary> /// 指定したテーブルでkeyに対応する値を取得する /// </summary> /// <param name="rootTable">検索するテーブル</param> /// <param name="key">取得する値のキー</param> /// <returns>値</returns> private string getTableValue(DicTable rootTable, string key) { string val = rootTable[key] as string; if (val == null) { val = ""; //見つからなかったので空文字を返す } return(val); }
/// <summary> /// 服装名リストを取得する /// </summary> /// <param name="charName">キャラクタ名</param> /// <param name="charPose">姿勢名</param> /// <returns>服装名リスト</returns> public List <string> GetCharDressList(string charName, string charPose) { List <string> list = new List <string>(); DicTable table = this.getCharPosesTable(charName); if (table == null) { return(list); } list = this.getKeyList("dresses", table[charPose] as DicTable); return(list); }
/// <summary> /// 姿勢名リストを取得する /// </summary> /// <param name="charName">キャラクタ名</param> /// <returns>姿勢名リスト</returns> public List <string> GetCharPoseList(string charName) { List <string> list = new List <string>(); DicTable table = m_rootTable["characters"] as DicTable; if (table != null) { list = this.getKeyList("poses", table[charName] as DicTable); list.Remove("defaultPose"); list.Remove("defaultTrans"); } return(list); }
/// <summary> /// 指定した表情の値を取得する /// </summary> /// <param name="name">キャラクタ名</param> /// <param name="pose">姿勢名</param> /// <param name="face">表情名</param> /// <returns>表情の値</returns> public string GetCharFaceValue(string name, string pose, string face) { string str = ""; DicTable table = getCharPosesTable(name); if (table != null) { if (table[pose] != null) { str = this.getSecondRankValueString(table, pose, "faces", face); } } return(str); }
/// <summary> /// 指定した服装の値を取得する /// </summary> /// <param name="name">キャラクタ名</param> /// <param name="pose">姿勢名</param> /// <param name="dress">服装名</param> /// <returns>服装の値</returns> public string GetCharDressValue(string name, string pose, string dress) { string str = ""; DicTable table = getCharPosesTable(name); if (table != null) { if (table[pose] != null) { str = this.getSecondRankValueString(table, pose, "dresses", dress); } } return(str); }
/// <summary> /// 姿勢の下にあるテーブルから指定したキーに対応する値を取得する /// </summary> /// <param name="name">キャラクタ名</param> /// <param name="pose">姿勢名</param> /// <param name="key">キー</param> /// <returns>値</returns> private string getCharPoseChildKeyVal(string name, string pose, string key) { string val = ""; DicTable table = getCharPosesTable(name); if (table != null && table[pose] != null) { DicTable poseTable = table[pose] as DicTable; if (poseTable[key] is string) { val = (string)poseTable[key]; } } return(val); }
/// <summary> /// 指定したキーの値を取得する /// </summary> /// <param name="rootTable">検索を開始するルートのテーブル</param> /// <param name="topKey">1つめのキー(例:"stages")</param> /// <param name="secondKey">2つめのキー(例:"カプセル背景")</param> /// <param name="valueKey">値を取得するキー(例:"image")</param> /// <returns>取得した値 取得できなかったときは空文字を返す</returns> private string getSecondRankValueString(DicTable rootTable, string topKey, string secondKey, string valueKey) { if (rootTable == null) { return(""); } string str = ""; DicTable table = rootTable[topKey] as DicTable; if (table != null) { DicTable table2 = table[secondKey] as DicTable; if ((table2 != null) && (table2[valueKey] is string)) { str = table2[valueKey].ToString(); } } return(str); }
/// <summary> /// 辞書を追加する /// </summary> public void PushDic() { DicTable table = new DicTable(); m_stack.Push(table); }