/// <summary> /// Constructor for build recipe for IProtoStructure. /// Must be used only in InitEntityRelationships phase. /// </summary> /// <param name="structureViewModel">View Model of IProtoStructure.</param> /// <param name="config">Building config.</param> public StructureBuildRecipeViewModel([NotNull] ProtoObjectStructureViewModel structureViewModel, [NotNull] IConstructionStageConfigReadOnly config) : base(structureViewModel.ProtoEntity) { if (!EntityViewModelsManager.EntityDictonaryCreated) { throw new Exception("CNEI: Build constructor used before all entity VMs sets."); } InputItemsList = config.StageRequiredItems .Select(item => EntityViewModelsManager.GetEntityViewModel(item.ProtoItem)) .ToList(); InputItemsVMList = config.StageRequiredItems .Select(item => new ViewModelEntityWithCount(EntityViewModelsManager.GetEntityViewModel(item.ProtoItem), item.Count * config.StagesCount)) .ToList().AsReadOnly(); OutputItemsList.Add(structureViewModel); StructureVM = structureViewModel; StationsList = EntityViewModelsManager.GetAllEntityViewModelsByType <IProtoItemToolToolbox>().AsReadOnly(); ListedInTechNodes = structureViewModel.ListedInTechNodes; IsAutoUnlocked = structureViewModel.IsAutoUnlocked; }
/// <summary> /// Constructor for upgrade recipe for IProtoStructure. /// Must be used only in InitEntityRelationships phase. /// </summary> /// <param name="structureViewModel">View Model of IProtoStructure.</param> /// <param name="upgradeEntry">Entry of upgrade config.</param> public StructureUpgradeRecipeViewModel([NotNull] ProtoObjectStructureViewModel structureViewModel, [NotNull] IConstructionUpgradeEntryReadOnly upgradeEntry) : base(upgradeEntry.ProtoStructure) { if (!EntityViewModelsManager.EntityDictionaryCreated) { throw new Exception("CNEI: Upgrade constructor used before all entity VMs sets."); } StructureVM = structureViewModel; InputItemsList = upgradeEntry.RequiredItems .Select(item => EntityViewModelsManager.GetEntityViewModel(item.ProtoItem)) .ToList(); InputItemsList.Add(structureViewModel); InputItemsVMList = upgradeEntry.RequiredItems .Select(item => new ViewModelEntityWithCount(EntityViewModelsManager.GetEntityViewModel(item.ProtoItem), item.Count)) .ToList().AsReadOnly(); if (!(EntityViewModelsManager.GetEntityViewModel(upgradeEntry.ProtoStructure) is ProtoObjectStructureViewModel newStructureViewModel)) { throw new Exception("CNEI: Can not find ProtoObjectStructureViewModel for " + upgradeEntry.ProtoStructure); } OutputItemsList.Add(newStructureViewModel); UpgradedStructureVM = newStructureViewModel; // Can not simply get it from result entityVM because it can has not Initialized Tech. //ListedInTechNodes = newStructureViewModel.ListedInTechNodes; ListedInTechNodes = upgradeEntry.ProtoStructure.ListedInTechNodes .Select(EntityViewModelsManager.GetEntityViewModel) .ToList().AsReadOnly(); IsAutoUnlocked = structureViewModel.IsAutoUnlocked; }