Esempio n. 1
0
        /// <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 RecipeViewModel([NotNull] ProtoObjectStructureViewModel structureViewModel,
                               [NotNull] IConstructionStageConfigReadOnly config)
            : base(structureViewModel.ProtoEntity)
        {
            if (!EntityViewModelsManager.EntityDictonaryCreated)
            {
                throw new Exception("CNEI: Build constructor used before all entity VMs sets.");
            }

            InputItemsVMList = config.StageRequiredItems
                               .Select(item => new ViewModelEntityWithCount(EntityViewModelsManager.GetEntityViewModel(item.ProtoItem),
                                                                            item.Count * config.StagesCount))
                               .ToList().AsReadOnly();

            OutputItemsVMList =
                new List <BaseViewModel>()
            {
                new ViewModelEntityWithCount(structureViewModel)
            }.AsReadOnly();

            OriginText        = "Build by:";
            IsStationCraft    = Visibility.Visible;
            StationsList      = EntityViewModelsManager.GetAllEntityViewModelsByType <IProtoItemToolToolbox>().AsReadOnly();
            ListedInTechNodes = structureViewModel.ListedInTechNodes;

            IsAutoUnlocked = structureViewModel.IsAutoUnlocked;
        }
Esempio n. 2
0
        public ConstructionActionState(ICharacter character, IStaticWorldObject worldObject, IItem itemConstructionTool)
            : base(character)
        {
            this.WorldObject               = worldObject;
            this.ItemConstructionTool      = itemConstructionTool;
            this.ProtoItemConstructionTool = (IProtoItemToolToolbox)itemConstructionTool.ProtoGameObject;
            var protoStructure = (IProtoObjectStructure)worldObject.ProtoWorldObject;

            this.Config = protoStructure.GetStructureActiveConfig(worldObject);

            this.currentStageTimeRemainsSeconds = this.currentStageDurationSeconds =
                this.CalculateStageDurationSeconds(character, isFirstStage: true);
            this.ObjectPublicState = worldObject.GetPublicState <StaticObjectPublicState>();

            this.structurePointsMax     = protoStructure.SharedGetStructurePointsMax(worldObject);
            this.stageStructureAddValue = this.structurePointsMax / this.Config.StagesCount;
        }