using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; [Serializable] public class ChestBuildModel { [SerializeField] public string ChestName; [SerializeField] public GameObject ChestPrefab; [SerializeField] public Vector3 Position; [SerializeField] public List<IndexValuePair<Item>> Content = new List<IndexValuePair<Item>>(); public ChestBuildModel(ChestPrefabAsset chestPrefabAsset) { ChestName = chestPrefabAsset.Chest.Name; ChestPrefab = chestPrefabAsset.Chest.ChestModel; Position = chestPrefabAsset.Position; Content.Clear(); foreach (IndexValuePair<EquippableItem> item in chestPrefabAsset.Chest.Content) { Content.Add( new IndexValuePair<Item>(item.Key, item.Value) ); } } public ChestPrefabAsset MapBuildModelToPrefabAssetModel() { ChestPrefabAsset chestPrefabAsset = new ChestPrefabAsset( ChestName, ChestPrefab.gameObject.name, Position ); chestPrefabAsset.Chest = new Chest(ChestPrefab.GetComponent<ChestWrapper>().Chest); chestPrefabAsset.Chest.ChestModel = ChestPrefab; chestPrefabAsset.Chest.Name = ChestName; chestPrefabAsset.Chest.Content = new List<IndexValuePair<EquippableItem>>(); foreach (var ChestElement in Content) { var castedObject = ChestElement.Value as EquippableItem; if (castedObject == null) chestPrefabAsset.Chest.Content.Add( new IndexValuePair<EquippableItem>(ChestElement.Key, new EquippableItem(ChestElement.Value)) ); else chestPrefabAsset.Chest.Content.Add( new IndexValuePair<EquippableItem>(ChestElement.Key, castedObject) ); } return chestPrefabAsset; } public static List<ChestBuildModel> ConvertPrefabAssetListToBuildModelList(List<ChestPrefabAsset> chestPrefabAssetList) { List<ChestBuildModel> convertedList = new List<ChestBuildModel>(); foreach(var element in chestPrefabAssetList) { convertedList.Add(ChestBuildModel.ConvertPrefabAssetModelToBuildModel(element)); } return convertedList; } public static ChestBuildModel ConvertPrefabAssetModelToBuildModel(ChestPrefabAsset chestPrefabAsset) { return new ChestBuildModel(chestPrefabAsset); } }