Exemplo n.º 1
0
        public void JoinTypeOr_AllConditionsMet_ReturnsTrue()
        {
            var project = BuildProject(BuildUnitTemplate(UnitType.Melee));
            var city    = BuildCity();

            var productionModifier = new ProductionModifier()
            {
                JoinedTogetherBy = ProductionModifier.JoinType.Or,
                Conditions       = new List <ProductionCondition>()
                {
                    new ProductionCondition()
                    {
                        Target             = ProductionCondition.TargetType.Project,
                        Restriction        = ProductionCondition.RestrictionType.MustBe,
                        ProjectRestriction = ProductionCondition.ProjectRestrictionCategory.Unit,
                        UnitTypeArguments  = new List <UnitType>()
                        {
                            UnitType.Melee
                        }
                    },
                    new ProductionCondition()
                    {
                        Target             = ProductionCondition.TargetType.Project,
                        Restriction        = ProductionCondition.RestrictionType.MustBe,
                        ProjectRestriction = ProductionCondition.ProjectRestrictionCategory.Unit,
                        UnitTypeArguments  = new List <UnitType>()
                        {
                            UnitType.Melee
                        }
                    },
                }
            };

            Assert.IsTrue(productionModifier.DoesModifierApply(project, city));
        }
Exemplo n.º 2
0
 public IDictionary <string, double> ModifyProduction(IDictionary <string, double> production)
 {
     if (ProductionModifier != null)
     {
         return(ProductionModifier.ModifyProduction(production));
     }
     return(production);
 }
Exemplo n.º 3
0
 public Building(string id, IDictionary <string, double> cost, Producer producer, ProductionModifier productionModifier, Harvester harvester)
 {
     Id                 = id;
     Cost               = cost;
     Producer           = producer;
     ProductionModifier = productionModifier;
     Harvester          = harvester;
 }
Exemplo n.º 4
0
        public IBuilding MakeBuilding(BuildingDTO dto)
        {
            Producer           producer           = null;
            ProductionModifier productionModifier = null;
            Harvester          harvester          = null;
            var cost = dto.Data["cost"].ToObject <Dictionary <string, double> >();

            if (dto.Data["producer"] != null)
            {
                var input = dto.Data["producer"]["input"] == null ?
                            new Dictionary <string, double>() : dto.Data["producer"]["input"].ToObject <Dictionary <string, double> >();

                var output = dto.Data["producer"]["output"] == null ?
                             new Dictionary <string, double>() : dto.Data["producer"]["output"].ToObject <Dictionary <string, double> >();

                producer = new Producer(input, output);
            }

            if (dto.Data["productionModifier"] != null)
            {
                var multipliers = dto.Data["productionModifier"]["multipliers"] == null ?
                                  new Dictionary <string, double>() : dto.Data["productionModifier"]["multipliers"].ToObject <Dictionary <string, double> >();

                productionModifier = new ProductionModifier(multipliers);
            }

            if (dto.Data["harvester"] != null)
            {
                var harvestableResources = dto.Data["harvester"]["harvestableResources"] == null ?
                                           new Dictionary <string, double>() : dto.Data["harvester"]["harvestableResources"].ToObject <Dictionary <string, double> >();

                harvester = new Harvester(harvestableResources);
            }

            return(new Building(dto.Id, cost, producer, productionModifier, harvester));
        }