示例#1
0
        /// <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);
        }
示例#2
0
 /// <summary>
 /// 辞書を前のものに戻す
 /// </summary>
 public void PopDic()
 {
     if (m_stack.Peek() != null)
     {
         m_rootTable = m_stack.Pop();
     }
 }
示例#3
0
        /// <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);
        }
示例#4
0
 /// <summary>
 /// 配列を前のものに戻す
 /// </summary>
 public void PopArray()
 {
     if (m_stack.Peek() != null)
     {
         this.m_rootTable   = m_stack.Pop();
         this.m_arrayNumber = m_arrayValStack.Pop();
     }
 }
示例#5
0
        /// <summary>
        /// 配列を追加する
        /// </summary>
        public void PushArray()
        {
            DicTable table = new DicTable();

            m_stack.Push(table);
            m_arrayValStack.Push(m_arrayNumber);
            m_arrayNumber = 0;
        }
示例#6
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);
        }
示例#7
0
        /// <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);
        }
示例#8
0
        /// <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);
        }
示例#9
0
        /// <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);
        }
示例#10
0
        /// <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);
        }
示例#11
0
        /// <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);
        }
示例#12
0
        /// <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);
        }
示例#13
0
        /// <summary>
        /// 辞書を追加する
        /// </summary>
        public void PushDic()
        {
            DicTable table = new DicTable();

            m_stack.Push(table);
        }