/// <summary> /// 현재 참조 중인 Xml 파일에서 폴더에 포함된 아이템들을 가져옵니다. /// </summary> /// <returns>아이템의 배열입니다.</returns> public Item[] GetItems() { List<Item> itemList = new List<Item>(); IEnumerable<string> itemEnumerator = from folderElem in this.targetXmlFile.Root.Elements("Items") select folderElem.Element("LinkTo").Value; string[] itemLinks = itemEnumerator.ToArray<string>()[0].Split('/'); if (itemLinks[0] == string.Empty) { return null; } if (this.GetItemNumber() != itemLinks.Length) { throw new ArgumentException("Xml 파일에 명시된 아이템 개수와 실제 아이템 개수가 다릅니다."); } foreach (string itemLink in itemLinks) { XmlItemReader itemReader = new XmlItemReader(Resources.Load<TextAsset>("Items/" + itemLink).text, false); switch (itemReader.GetID() / 1000) { case 0: { itemList.Add(itemReader.GetItemAsWorkBook()); break; } case 1: { itemList.Add(itemReader.GetItemAsDataAddress()); break; } case 2: { itemList.Add(itemReader.GetItemAsPartialData()); break; } case 3: { itemList.Add(itemReader.GetItemAsUnknownData()); break; } default: { throw new ArgumentException("아이템 ID가 잘못된 듯 싶습니다."); } } } return itemList.ToArray(); }
/// <summary> /// 아이템 정보가 담겨있는 Xml 파일의 경로를 통해 해쉬맵에 해당 아이템을 추가합니다. /// </summary> /// <param name="itemXmlPath">아이템 정보가 담겨있는 Xml 파일의 경로입니다.</param> private static void AddItemToHashMap(string itemXmlPath) { XmlItemReader itemReader = new XmlItemReader(Resources.Load<TextAsset>(itemXmlPath).text, false); switch (itemReader.GetID() / 1000) { case 0: { realizedData.itemHashMap.Add(itemReader.GetID(), itemReader.GetItemAsWorkBook()); break; } case 1: { realizedData.itemHashMap.Add(itemReader.GetID(), itemReader.GetItemAsDataAddress()); break; } case 2: { realizedData.itemHashMap.Add(itemReader.GetID(), itemReader.GetItemAsPartialData()); break; } case 3: { realizedData.itemHashMap.Add(itemReader.GetID(), itemReader.GetItemAsUnknownData()); break; } } }