Esempio n. 1
0
        private IHexCell BuildCell(bool hasRoads, IImprovement improvement, IResourceNode resourceNode)
        {
            var mockCell = new Mock <IHexCell>();

            mockCell.Setup(cell => cell.HasRoads).Returns(hasRoads);
            mockCell.Setup(cell => cell.Index).Returns(AllCells.Count);

            var newCell = mockCell.Object;

            var improvements = improvement != null ? new List <IImprovement> ()
            {
                improvement
            } : new List <IImprovement>();
            var resourceNodes = resourceNode != null ? new List <IResourceNode>()
            {
                resourceNode
            } : new List <IResourceNode>();

            MockImprovementLocationCanon.Setup(canon => canon.GetPossessionsOfOwner(newCell)).Returns(improvements);
            MockNodeLocationCanon.Setup(canon => canon.GetPossessionsOfOwner(newCell)).Returns(resourceNodes);

            AllCells.Add(newCell);

            return(newCell);
        }
        public void CommonInstall()
        {
            AllTemplates.Clear();
            LastImprovementCreated = null;

            MockImprovementValidityLogic = new Mock <IImprovementValidityLogic>();
            MockUnitPositionCanon        = new Mock <IUnitPositionCanon>();
            MockImprovementFactory       = new Mock <IImprovementFactory>();
            MockImprovementLocationCanon = new Mock <IImprovementLocationCanon>();
            MockImprovementWorkLogic     = new Mock <IImprovementWorkLogic>();

            MockImprovementLocationCanon.Setup(canon => canon.GetPossessionsOfOwner(It.IsAny <IHexCell>()))
            .Returns(new List <IImprovement>());

            MockImprovementFactory
            .Setup(factory => factory.BuildImprovement(It.IsAny <IImprovementTemplate>(), It.IsAny <IHexCell>()))
            .Returns <IImprovementTemplate, IHexCell>((template, cell) => BuildImprovement(template, cell));

            Container.Bind <IEnumerable <IImprovementTemplate> >().WithId("Available Improvement Templates").FromInstance(AllTemplates);

            Container.Bind <IImprovementValidityLogic>().FromInstance(MockImprovementValidityLogic.Object);
            Container.Bind <IUnitPositionCanon>       ().FromInstance(MockUnitPositionCanon.Object);
            Container.Bind <IImprovementFactory>      ().FromInstance(MockImprovementFactory.Object);
            Container.Bind <IImprovementLocationCanon>().FromInstance(MockImprovementLocationCanon.Object);
            Container.Bind <IImprovementWorkLogic>    ().FromInstance(MockImprovementWorkLogic.Object);

            Container.Bind <BuildImprovementAbilityHandler>().AsSingle();
        }
 public YieldSummary GetYieldOfImprovement(
     IImprovement improvement, IResourceNode nodeAtLocation,
     IEnumerable <IResourceDefinition> visibleResources,
     IEnumerable <ITechDefinition> discoveredTechs, bool hasFreshWater
     )
 {
     if (improvement.IsConstructed && !improvement.IsPillaged)
     {
         return(GetYieldOfImprovementTemplate(
                    improvement.Template, nodeAtLocation, visibleResources,
                    discoveredTechs, hasFreshWater
                    ));
     }
     else
     {
         return(YieldSummary.Empty);
     }
 }
Esempio n. 4
0
        private void OnImprovementPillaged(IImprovement improvement)
        {
            var location = ImprovementLocationCanon.GetOwnerOfPossession(improvement);

            var nodeAtLocation = ResourceNodeLocationCanon.GetPossessionsOfOwner(location).FirstOrDefault();

            if (nodeAtLocation == null)
            {
                return;
            }

            var civOwningCell = CivTerritoryLogic.GetCivClaimingCell(location);

            if (civOwningCell != null)
            {
                ResourceTransferCanon.SynchronizeResourceForCiv(nodeAtLocation.Resource, civOwningCell);
            }
        }
Esempio n. 5
0
        public YieldSummary GetYieldFromNode(
            IResourceNode node, IEnumerable <IResourceDefinition> visibleResources,
            IImprovement improvementAtLocation
            )
        {
            var retval = YieldSummary.Empty;

            if (visibleResources.Contains(node.Resource))
            {
                retval += node.Resource.BonusYieldBase;

                if (improvementAtLocation != null &&
                    node.Resource.Extractor == improvementAtLocation.Template &&
                    improvementAtLocation.IsConstructed &&
                    !improvementAtLocation.IsPillaged
                    )
                {
                    retval += node.Resource.BonusYieldWhenImproved;
                }
            }

            return(retval);
        }
        private IImprovement BuildImprovement(
            IImprovementTemplate template, IHexCell location, int workInvested = 0,
            bool isConstructed = false, bool isPillaged = false
            )
        {
            var mockImprovement = new Mock <IImprovement>();

            mockImprovement.SetupAllProperties();

            mockImprovement.Setup(improvement => improvement.Template).Returns(template);
            mockImprovement.Setup(improvement => improvement.IsConstructed).Returns(isConstructed);
            mockImprovement.Setup(improvement => improvement.IsPillaged).Returns(isPillaged);

            var newImprovement = mockImprovement.Object;

            newImprovement.WorkInvested = workInvested;

            MockImprovementLocationCanon.Setup(canon => canon.GetOwnerOfPossession(newImprovement))
            .Returns(location);

            LastImprovementCreated = newImprovement;

            return(newImprovement);
        }
Esempio n. 7
0
 public void AddImprovement(IImprovement improvement) => _improvements.Add(improvement);
Esempio n. 8
0
 private void AddImprovement(IImprovement improvement)
 {
     this.Improvements.Add(improvement);
 }
        public float GetWorkOfUnitOnImprovement(IUnit unit, IImprovement improvement)
        {
            var unitOwner = UnitPossessionCanon.GetOwnerOfPossession(unit);

            return(1 * CivModifiers.ImprovementBuildSpeed.GetValueForCiv(unitOwner));
        }
Esempio n. 10
0
 private void OnImprovementBeingDestroyed(IImprovement improvement)
 {
     allImprovements.Remove(improvement);
 }
Esempio n. 11
0
 public void AddImprovement(IImprovement improvement)
 {
     Invoke(improvement);
 }