예제 #1
0
        public static void LoadFromSystemDB(MieSystemDB systemDB, MieQuestsNodeInfo convNodeInfo)
        {
            SQLiteCommand command = systemDB.Connection.CreateCommand();

            command.CommandText = @"SELECT FileCode,FromNodeID,ToNodeID FROM QuestsNodeLinks ORDER BY FileCode;";
            using (SQLiteDataReader reader = command.ExecuteReader())
            {
                while (reader.Read() == true)
                {
                    var fileCode   = (long)reader["FileCode"];
                    var fromNodeID = (int)(long)reader["FromNodeID"];
                    var toNodeID   = (int)(long)reader["ToNodeID"];

                    var           nodeFile = convNodeInfo.GetNodeFile(fileCode);
                    MieQuestsLink nodeLink = new MieQuestsLink(fromNodeID, toNodeID);
                    nodeFile.AddLinkEntry(nodeLink);
                }
            }
        }
예제 #2
0
 /// <summary>
 /// Nodeのリンクエントリーを追加する。
 /// </summary>
 /// <param name="link">リンクエントリー</param>
 public void AddLinkEntry(MieQuestsLink link)
 {
     this.Links.Add(link);
 }
예제 #3
0
        /// <summary>
        /// クエスト付加情報ファイルを読み込み、クエストノード情報を返す。
        /// クエスト付加情報は1ファイルの中に複数ファイルの情報が格納されている。
        /// </summary>
        /// <param name="path">クエスト付加情報ファイルのパス</param>
        /// <param name="fileList">FileList</param>
        /// <returns>クエストノード情報</returns>
        public static MieQuestsNodeInfo LoadFromJson(string path, MieFileList fileList)
        {
            MieQuestsNodeInfo mieQuestsNodeInfo = new MieQuestsNodeInfo();
            string            jtext             = LoadJson(path);

            jtext = jtext.Replace("$type", "MieQuestsNodeDataTypeTag");
            var oeQuests = JsonConvert.DeserializeObject <MieOEQuests>(jtext);

            foreach (var questFile in oeQuests.Quests)
            {
                var questTypeNumber = questFile.QuestType;

                //// QuestsFileの処理
                MieQuestsNodeFile mieQuestsNodeFile = null;

                var fileID = questFile.Filename.Replace(".quest", string.Empty);
                //// FileIDを統一形式に変換する。
                fileID = MieFileUtils.ConvertFileIDToCommon(fileID);
                fileID = MieStringUtils.NormalizedFileID(fileID);

                var fileCode = fileList.GetHashByFileID(fileID);
                if (fileCode == 0)
                {
                    //// 言語情報から生成されたFileListに含まれないものは無視する。
                    continue;
                }
                else
                {
                    mieQuestsNodeFile = new MieQuestsNodeFile(fileCode);
                    mieQuestsNodeInfo.AddFile(mieQuestsNodeFile);
                }

                //// QuestEntryの処理
                foreach (var node in questFile.Nodes)
                {
                    var  nodeType   = GetQuestNodeDataTypeTag(node.MieQuestsNodeDataTypeTag);
                    bool isRootNode = node.NodeID == 0 ? true : false;

                    var questsNode = new MieQuestsNodeEntry(
                        nodeType,
                        node.NodeID,
                        isRootNode);
                    mieQuestsNodeFile.AddFlatNodeEntry(questsNode);

                    //// EndStatusNodeを追加する。
                    AddEndStatusNode(mieQuestsNodeFile, node);

                    //// リンク情報作成
                    foreach (var link in node.Links)
                    {
                        MieQuestsLink mieQuestsLinks = new MieQuestsLink(link.FromNodeID, link.ToNodeID);
                        mieQuestsNodeFile.AddLinkEntry(mieQuestsLinks);
                    }
                }

                mieQuestsNodeFile.BuildLink();
                mieQuestsNodeFile.UpdateDepth();
            }

            return(mieQuestsNodeInfo);
        }