예제 #1
0
 public void GenerateStage(ConstructionStage Stage, int StageNumber)
 {
     if (!ContainedObjects.ContainsKey(StageNumber))
     {
         ContainedObjects[StageNumber] = new List <ComponentData>();
     }
     foreach (var NeededObject in Stage.NeededParts)
     {
         if (Stage.IncludePartsInitialisation && GenerateComponents)
         {
             for (int i = 0; i < NeededObject.NumberNeeded; i++)
             {
                 if (NeededObject.GameObject != null)
                 {
                     var _Object = PoolManager.PoolNetworkInstantiate(NeededObject.GameObject, this.transform.position, parent: this.transform.parent);
                     CustomNetTransform netTransform = _Object.GetComponent <CustomNetTransform>();
                     netTransform.DisappearFromWorldServer();
                     Stage.PresentParts.Add(_Object);
                 }
                 else if (NeededObject.CType != ConstructionElementType.Null)
                 {
                     var _Object = PoolManager.PoolNetworkInstantiate(StandardConstructionComponent, this.transform.position, parent: this.transform.parent);
                     CustomNetTransform netTransform = _Object.GetComponent <CustomNetTransform>();
                     netTransform.DisappearFromWorldServer();
                     _Object.GetComponent <ConstructionComponent>().setTypeLevel(NeededObject.CType, NeededObject.level);
                     Stage.PresentParts.Add(_Object);
                 }
             }
             NeededObject.NumberPresent = NeededObject.NumberNeeded;
         }
         ContainedObjects[StageNumber].Add(NeededObject);
     }
 }
        private static void AssertConstructionStages(
            UpliftVanCalculatorInput input, StabilityInput stabilityModel, SoilProfile soilProfile,
            Waternet dailyWaternet, Waternet extremeWaternet, IDictionary <SoilLayer, LayerWithSoil> layerLookup)
        {
            Assert.AreEqual(2, stabilityModel.ConstructionStages.Count);

            ConstructionStage dailyConstructionStage = stabilityModel.ConstructionStages.ElementAt(0);

            Assert.AreSame(soilProfile, dailyConstructionStage.SoilProfile);
            Assert.AreSame(dailyWaternet, dailyConstructionStage.Waternet);
            CollectionAssert.AreEqual(FixedSoilStressCreator.Create(layerLookup),
                                      dailyConstructionStage.FixedSoilStresses, new FixedSoilStressComparer());
            CollectionAssert.AreEqual(PreconsolidationStressCreator.Create(input.SoilProfile.PreconsolidationStresses),
                                      dailyConstructionStage.PreconsolidationStresses, new PreconsolidationStressComparer());
            AssertMultiplicationFactors(dailyConstructionStage.MultiplicationFactorsCPhiForUplift.Single());
            AssertIrrelevantValues(dailyConstructionStage);

            ConstructionStage extremeConstructionStage = stabilityModel.ConstructionStages.ElementAt(1);

            Assert.AreSame(soilProfile, extremeConstructionStage.SoilProfile);
            Assert.AreSame(extremeWaternet, extremeConstructionStage.Waternet);
            CollectionAssert.IsEmpty(extremeConstructionStage.FixedSoilStresses);
            CollectionAssert.IsEmpty(extremeConstructionStage.PreconsolidationStresses);
            AssertMultiplicationFactors(extremeConstructionStage.MultiplicationFactorsCPhiForUplift.Single());
            AssertIrrelevantValues(extremeConstructionStage);
        }
 private static void AssertIrrelevantValues(ConstructionStage constructionStage)
 {
     CollectionAssert.IsEmpty(constructionStage.ConsolidationValues); // Irrelevant
     Assert.IsNotNull(constructionStage.Earthquake);                  // Irrelevant
     CollectionAssert.IsEmpty(constructionStage.ForbiddenLines);      // Irrelevant
     CollectionAssert.IsEmpty(constructionStage.Geotextiles);         // Irrelevant
     CollectionAssert.IsEmpty(constructionStage.LineLoads);           // Irrelevant
     CollectionAssert.IsEmpty(constructionStage.Nails);               // Irrelevant
     CollectionAssert.IsEmpty(constructionStage.TreesOnSlope);        // Irrelevant
     CollectionAssert.IsEmpty(constructionStage.UniformLoads);        // Irrelevant
     Assert.IsNotNull(constructionStage.YieldStressField);            // Irrelevant
 }
        public async Task <Guid> Handle(AddNewConstructionStageCommand cmd)
        {
            if (await _context.ConstructionStages.AnyAsync(s => s.Name == cmd.Name))
            {
                throw new NameAlreadyExistException(nameof(ConstructionStage), cmd.Name);
            }

            var constructionStage = ConstructionStage.New(cmd.Name, Enumeration.FromDisplayName <Color>(cmd.Color),
                                                          cmd.Icon, cmd.PlannedStartDate, cmd.PlannedFinishDate, cmd.ActualStartDate, cmd.ActualFinishDate);

            await _context.ConstructionStages.AddAsync(constructionStage);

            return(constructionStage.Id);
        }
예제 #5
0
        /// <summary>
        /// Asserts whether <paramref name="actual"/> is equal to <paramref name="expected"/>.
        /// </summary>
        /// <param name="expected">The expected collection of <see cref="ConstructionStage"/>.</param>
        /// <param name="actual">The actual collection of <see cref="ConstructionStage"/>.</param>
        /// <exception cref="AssertionException">Thrown when <paramref name="actual"/>
        /// is not equal to <paramref name="expected"/>.</exception>
        private static void AssertConstructionStages(ICollection <ConstructionStage> expected, ICollection <ConstructionStage> actual)
        {
            Assert.AreEqual(expected.Count, actual.Count);

            for (var i = 0; i < expected.Count; i++)
            {
                ConstructionStage expectedConstructionStage = expected.ElementAt(i);
                ConstructionStage actualConstructionStage   = actual.ElementAt(i);

                KernelInputAssert.AssertSoilProfile(expectedConstructionStage.SoilProfile, actualConstructionStage.SoilProfile);
                Assert.AreEqual(expectedConstructionStage.Waternet, actualConstructionStage.Waternet);
                CollectionAssert.AreEqual(expectedConstructionStage.FixedSoilStresses, actualConstructionStage.FixedSoilStresses, new FixedSoilStressComparer());
                CollectionAssert.AreEqual(expectedConstructionStage.PreconsolidationStresses, actualConstructionStage.PreconsolidationStresses, new PreconsolidationStressComparer());

                AssertMultiplicationFactorsCPhiForUplift(expectedConstructionStage.MultiplicationFactorsCPhiForUplift.Single(),
                                                         actualConstructionStage.MultiplicationFactorsCPhiForUplift.Single());
            }
        }
예제 #6
0
파일: Construction.cs 프로젝트: ndech/Alpha
        void IDailyUpdatableItem.DayUpdate()
        {
            if (_constructionStage == ConstructionStage.ResourceGathering)
            {
                if(_resourceRequirements.All(rr=>rr.IsFullfilled))
                    _constructionStage = ConstructionStage.Construction;
                foreach (ResourceRequirement requirement in _resourceRequirements)
                {
                    Resource resource = _location.Province.Resources.SingleOrDefault(r => r.Type == requirement.ResourceType);
                    if(resource == null)
                        continue;
                    double change = Math.Min(resource.StorageLevel, requirement.RemainingValue);
                    requirement.CurrentValue += change;
                    resource.StorageLevel -= change;
                }
            }
            else
            {

            }
        }
예제 #7
0
파일: Construction.cs 프로젝트: ndech/Alpha
 void IDailyUpdatableItem.DayUpdate()
 {
     if (_constructionStage == ConstructionStage.ResourceGathering)
     {
         if (_resourceRequirements.All(rr => rr.IsFullfilled))
         {
             _constructionStage = ConstructionStage.Construction;
         }
         foreach (ResourceRequirement requirement in _resourceRequirements)
         {
             Resource resource = _location.Province.Resources.SingleOrDefault(r => r.Type == requirement.ResourceType);
             if (resource == null)
             {
                 continue;
             }
             double change = Math.Min(resource.StorageLevel, requirement.RemainingValue);
             requirement.CurrentValue += change;
             resource.StorageLevel    -= change;
         }
     }
     else
     {
     }
 }
    void Update()
    {
        if (ConstructionSite == null)
        {
            return;
        }
        else
        if (ConstructionSite.GetCompletionPercentage() >= 1f)
        {
            ConstructionSite = null;
            SelectionPanel.RemoveSelection();
            return;
        }

        if (ConstructionSite.Building != null)
        {
            if (firstShow ||
                lastStage != ConstructionSite.Stage ||
                lastTransitionState != ConstructionSite.TransitionToDeconstructionStage)
            {
                if (ConstructionSite.TransitionToDeconstructionStage)
                {
                    if (ConstructionSite.Stage == ConstructionStage.Construction)
                    {
                        Text.text = GameManager.Instance.GetText("s_deconstruction_site");
                    }
                    else if (ConstructionSite.Stage == ConstructionStage.ScaffoldingConstruction)
                    {
                        Text.text = GameManager.Instance.GetText("s_scaffolding_deconstruction");
                    }
                }
                else
                {
                    if (ConstructionSite.Stage == ConstructionStage.Construction)
                    {
                        Text.text = GameManager.Instance.GetText("s_construction_site");
                    }
                    else if (ConstructionSite.Stage == ConstructionStage.ScaffoldingConstruction)
                    {
                        Text.text = GameManager.Instance.GetText("s_scaffolding_construction");
                    }
                    else if (ConstructionSite.Stage == ConstructionStage.Deconstruction)
                    {
                        Text.text = GameManager.Instance.GetText("s_deconstruction_site");
                    }
                    else if (ConstructionSite.Stage == ConstructionStage.ScaffoldingDeconstruction)
                    {
                        Text.text = GameManager.Instance.GetText("s_scaffolding_deconstruction");
                    }
                }
            }

            SubText.text = ConstructionSite.Building.Name;
        }

        float percentage = ConstructionSite.GetStageCompletionPercentage();

        if (ConstructionSite.DeconstructionMode ||
            (ConstructionSite.ConstructionMode &&
             ConstructionSite.TransitionToDeconstructionStage))
        {
            percentage = 1f - percentage;
        }

        if (ConstructionSite.Halted)
        {
            ProgressBar.SetFillPercentageWithoutText(percentage);
            ProgressBar.SetText(GameManager.Instance.GetText("s_halted"));
        }
        else
        {
            ProgressBar.SetFillPercentage(percentage);
        }

        if (firstShow ||
            ConstructionSite.InputStorage.Changed ||
            ConstructionSite.OutputStorage.Changed ||
            lastStage != ConstructionSite.Stage ||
            lastTransitionState != ConstructionSite.TransitionToDeconstructionStage)
        {
            if (firstShow)
            {
                firstShow = false;
            }
            if (ConstructionSite.InputStorage.Changed)
            {
                ConstructionSite.InputStorage.Changed = false;
            }
            if (ConstructionSite.OutputStorage.Changed)
            {
                ConstructionSite.OutputStorage.Changed = false;
            }

            lastStage           = ConstructionSite.Stage;
            lastTransitionState = ConstructionSite.TransitionToDeconstructionStage;

            SelectionPanel.HideResourceIcons(icons, this.transform);

            if (ConstructionSite.ConstructionMode)
            {
                if (ConstructionSite.Stage == ConstructionStage.ScaffoldingConstruction &&
                    ConstructionSite.Prototype.ResourcesForScaffoldingConstruction != null)
                {
                    tempRequiredResources = SelectionPanel.GetResourcesList(ConstructionSite.Prototype.ResourcesForScaffoldingConstruction);
                    tempRequiredResources.Sort();
                    tempResources = SelectionPanel.GetResourcesList(ConstructionSite.InputStorage.Resources);
                    SelectionPanel.ShowIconsWithRequirements(slots, tempRequiredResources, tempResources, icons);
                }
                else if (ConstructionSite.Prototype.ConstructionResources != null)
                {
                    tempRequiredResources = SelectionPanel.GetResourcesList(ConstructionSite.Prototype.ConstructionResources);
                    tempRequiredResources.Sort();
                    tempResources = SelectionPanel.GetResourcesList(ConstructionSite.InputStorage.Resources);
                    SelectionPanel.ShowIconsWithRequirements(slots, tempRequiredResources, tempResources, icons);
                }
            }
            else
            if (ConstructionSite.DeconstructionMode)
            {
                tempResources = SelectionPanel.GetResourcesList(ConstructionSite.OutputStorage.Resources);
                tempResources.AddRange(SelectionPanel.GetResourcesList(ConstructionSite.OutputStorage.ReservedResources));
                tempResources.Sort();

                for (int index = 0; index < tempResources.Count; index++)
                {
                    SelectionPanel.ShowResourceIcon(tempResources[index], slots[index], false, icons);
                }
            }
        }
    }