Example #1
0
 public Formula(IObjectTypeFactory objectTypeFactory, UnitFactory unitFactory, IStructureCsvFactory structureFactory, ISystemVariableManager systemVariableManager)
 {
     SystemVariableManager = systemVariableManager;
     ObjectTypeFactory     = objectTypeFactory;
     UnitFactory           = unitFactory;
     StructureCsvFactory   = structureFactory;
 }
Example #2
0
        public void GetInstantTrainCount_WhenThereAreMultipleEffects([Frozen] IObjectTypeFactory objectTypeFactory,
                                                                     Formula formula,
                                                                     IStructure structure)
        {
            var effects = new List <Effect>
            {
                new Effect
                {
                    Id        = EffectCode.UnitTrainInstantTime,
                    IsPrivate = false,
                    Location  = EffectLocation.City,
                    Value     = new object[] { 1, "BarrackUnits", 20, 150 }
                },
                new Effect
                {
                    Id        = EffectCode.UnitTrainInstantTime,
                    IsPrivate = false,
                    Location  = EffectLocation.City,
                    Value     = new object[] { 1, "BarrackUnits", 30, 150 }
                }
            };

            structure.City.Technologies.GetEffects(EffectCode.UnitTrainInstantTime).Returns(effects);
            objectTypeFactory.IsObjectType("BarrackUnits", 101).Returns(true);
            structure.Type.Returns((ushort)1);
            formula.GetInstantTrainCount(structure).Should().Be(50);
        }
Example #3
0
        public void GetInstantTrainCount_WhenEffectIsAssociateWithMultipleUnits([Frozen] IObjectTypeFactory objectTypeFactory,
                                                                                Formula formula,
                                                                                IStructure structure,
                                                                                ITroopStub troopStub)
        {
            var effects = new List <Effect>
            {
                new Effect
                {
                    Id        = EffectCode.UnitTrainInstantTime,
                    IsPrivate = false,
                    Location  = EffectLocation.City,
                    Value     = new object[] { 1, "BarrackUnits", 50, 50 }
                }
            };

            structure.City.Technologies.GetEffects(EffectCode.UnitTrainInstantTime).Returns(effects);
            objectTypeFactory.IsObjectType("BarrackUnits", 101).Returns(true);
            objectTypeFactory.IsObjectType("BarrackUnits", 102).Returns(true);
            objectTypeFactory.IsObjectType("BarrackUnits", 105).Returns(false);
            structure.Type.Returns((ushort)1);

            troopStub.ToUnitList().ReturnsForAnyArgs(new List <Unit>
            {
                new Unit(101, 10),
                new Unit(102, 25),
                new Unit(105, 10)
            });
            structure.City.Troops.MyStubs().Returns(new List <ITroopStub> {
                troopStub
            });

            formula.GetInstantTrainCount(structure).Should().Be(15);
        }
Example #4
0
 public ResourceGatherActiveAction(ILocker locker,
                                   IObjectTypeFactory objectTypeFactory,
                                   IWorld world,
                                   IActionFactory actionFactory)
 {
     this.locker            = locker;
     this.objectTypeFactory = objectTypeFactory;
     this.world             = world;
     this.actionFactory     = actionFactory;
 }
Example #5
0
        public StructureBuildActiveActionExecuteBuilder(IFixture fixture)
        {
            this.fixture = fixture;

            requirementCsvFactory = fixture.Freeze <IRequirementCsvFactory>();
            requirementCsvFactory
            .GetLayoutRequirement(Arg.Any <ushort>(), Arg.Any <byte>())
            .Validate(Arg.Any <IStructure>(), Arg.Any <ushort>(), Arg.Any <uint>(), Arg.Any <uint>(), Arg.Any <byte>())
            .Returns(true);

            structureBaseStats = fixture.Freeze <IStructureBaseStats>();
            structureBaseStats.Size.Returns <byte>(0);
            var structureCost = new Resource(1234, 8446, 1343, 1234, 1246);

            structureBaseStats.Cost.Returns(structureCost);

            var structure = fixture.Freeze <IStructure>();

            structure.Stats.Base.Returns(structureBaseStats);

            objectTypeFactory = fixture.Freeze <IObjectTypeFactory>();
            objectTypeFactory.IsObjectType("NoRoadRequired", Arg.Any <ushort>()).Returns(true);

            city = fixture.Create <ICity>();
            city.PrimaryPosition.Returns(new Position(99, 98));
            city.Radius.Returns <byte>(5);
            city.Resource.HasEnough(structureBaseStats.Cost).Returns(true);
            city.CreateStructure(Arg.Any <ushort>(), Arg.Any <byte>(), Arg.Any <uint>(), Arg.Any <uint>()).Returns(structure);

            roadPathFinder = fixture.Freeze <IRoadPathFinder>();
            roadPathFinder.CanBuild(Arg.Any <Position>(), Arg.Any <byte>(), city, Arg.Any <bool>()).Returns(Error.Ok);

            tileLocator = fixture.Freeze <ITileLocator>();
            tileLocator.TileDistance(new Position(99, 98), 1, Arg.Any <Position>(), 1).Returns(1);

            world = fixture.Freeze <IWorld>();
            ICity outCity;

            world.TryGetObjects(Arg.Any <uint>(), out outCity).Returns(x =>
            {
                x[1] = city;
                return(true);
            });
            world.Regions.GetObjectsInTile(Arg.Any <uint>(), Arg.Any <uint>()).Returns(new List <ISimpleGameObject>());
            world.Regions.IsValidXandY(0, 0).ReturnsForAnyArgs(true);
            world.Regions.Add(structure).Returns(true);

            structureCsvFactory = fixture.Freeze <IStructureCsvFactory>();
            structureCsvFactory.GetBaseStats(0, 0).ReturnsForAnyArgs(structureBaseStats);

            formula = Substitute.For <Formula>();
            formula.CityMaxConcurrentBuildActions(0, 0, null, null).ReturnsForAnyArgs(Error.Ok);
            formula.StructureCost(null, null).ReturnsForAnyArgs(structureCost);
            fixture.Register(() => formula);
        }
Example #6
0
 public ResourceGatherActiveAction(uint cityId,
                                   uint objectId,
                                   ILocker locker,
                                   IObjectTypeFactory objectTypeFactory,
                                   IWorld world,
                                   IActionFactory actionFactory)
     : this(locker, objectTypeFactory, world, actionFactory)
 {
     this.cityId   = cityId;
     this.objectId = objectId;
 }
Example #7
0
 public StructureDowngradeActiveAction(uint cityId,
                                       uint structureId,
                                       IObjectTypeFactory objectTypeFactory,
                                       IStructureCsvFactory structureCsvFactory,
                                       IWorld world,
                                       ILocker locker,
                                       Formula formula)
     : this(objectTypeFactory, structureCsvFactory, world, locker, formula)
 {
     this.cityId      = cityId;
     this.structureId = structureId;
 }
Example #8
0
 public StructureDowngradeActiveAction(IObjectTypeFactory objectTypeFactory,
                                       IStructureCsvFactory structureCsvFactory,
                                       IWorld world,
                                       ILocker locker,
                                       Formula formula)
 {
     this.objectTypeFactory   = objectTypeFactory;
     this.structureCsvFactory = structureCsvFactory;
     this.world   = world;
     this.locker  = locker;
     this.formula = formula;
 }
Example #9
0
        public void HiddenResourceNoBasementsShouldNotProtectAnyResource(IObjectTypeFactory objectTypeFactory, Formula formula)
        {
            var city = Substitute.For <ICity>();

            city.GetEnumerator()
            .Returns(args => new List <IStructure> {
                Substitute.For <IStructure>()
            }.GetEnumerator());

            objectTypeFactory.IsStructureType("Basement", Arg.Any <IStructure>()).Returns(false);

            formula.HiddenResource(city).CompareTo(new Resource(0, 0, 0, 0, 0)).Should().Be(0);
            formula.HiddenResource(city, true).CompareTo(new Resource(0, 0, 0, 0, 0)).Should().Be(0);
        }
Example #10
0
 public RegionCommandsModule(ITileLocator tileLocator,
                             IWorld world,
                             IObjectTypeFactory objectTypeFactory,
                             IRoadPathFinder roadPathFinder,
                             ILocker locker,
                             Util.IChannel channel)
 {
     this.tileLocator       = tileLocator;
     this.world             = world;
     this.objectTypeFactory = objectTypeFactory;
     this.roadPathFinder    = roadPathFinder;
     this.locker            = locker;
     this.channel           = channel;
 }
Example #11
0
 public StructureUpgradeActiveAction(uint cityId,
                                     uint structureId,
                                     IStructureCsvFactory structureCsvFactory,
                                     Formula formula,
                                     IWorld world,
                                     Procedure procedure,
                                     ILocker locker,
                                     IRequirementCsvFactory requirementCsvFactory,
                                     IObjectTypeFactory objectTypeFactory,
                                     CallbackProcedure callbackProcedure)
     : this(structureCsvFactory, formula, world, procedure, locker, requirementCsvFactory, objectTypeFactory, callbackProcedure)
 {
     this.cityId      = cityId;
     this.structureId = structureId;
 }
Example #12
0
        public RoadManager(IRegionManager regionManager,
                           IObjectTypeFactory objectTypeFactory,
                           IChannel channel,
                           IRegionLocator regionLocator,
                           ITileLocator tileLocator)
        {
            this.regionManager     = regionManager;
            this.objectTypeFactory = objectTypeFactory;
            this.channel           = channel;
            this.regionLocator     = regionLocator;
            this.tileLocator       = tileLocator;

            regionManager.ObjectAdded   += RegionManagerOnObjectAdded;
            regionManager.ObjectRemoved += RegionManagerOnObjectRemoved;
        }
Example #13
0
 public CityPassiveAction(uint cityId,
                          IObjectTypeFactory objectTypeFactory,
                          ILocker locker,
                          Formula formula,
                          IActionFactory actionFactory,
                          Procedure procedure,
                          IGameObjectLocator locator,
                          IBattleFormulas battleFormulas,
                          IStructureCsvFactory structureFactory,
                          TechnologyFactory technologyFactory,
                          UnitFactory unitFactory)
     : this(objectTypeFactory, locker, formula, actionFactory, procedure, locator, battleFormulas, structureFactory, technologyFactory, unitFactory)
 {
     this.cityId = cityId;
 }
Example #14
0
        public StaminaMonitor(IBattleManager battleManager,
                              ICombatGroup combatGroup,
                              short initialStamina,
                              IBattleFormulas battleFormulas,
                              IObjectTypeFactory objectTypeFactory)
        {
            this.objectTypeFactory = objectTypeFactory;
            CombatGroup            = combatGroup;
            Stamina        = initialStamina;
            BattleFormulas = battleFormulas;

            battleManager.ActionAttacked   += BattleActionAttacked;
            battleManager.WithdrawAttacker += BattleWithdrawAttacker;
            battleManager.EnterRound       += BattleEnterRound;
            battleManager.ExitTurn         += BattleExitTurn;
        }
Example #15
0
 public CityBattleProcedure(ITileLocator tileLocator,
                            IBattleManagerFactory battleManagerFactory,
                            IActionFactory actionFactory,
                            IObjectTypeFactory objectTypeFactory,
                            BattleProcedure battleProcedure,
                            ICombatGroupFactory combatGroupFactory,
                            ICombatUnitFactory combatUnitFactory)
 {
     this.tileLocator          = tileLocator;
     this.battleManagerFactory = battleManagerFactory;
     this.actionFactory        = actionFactory;
     this.objectTypeFactory    = objectTypeFactory;
     this.battleProcedure      = battleProcedure;
     this.combatGroupFactory   = combatGroupFactory;
     this.combatUnitFactory    = combatUnitFactory;
 }
Example #16
0
 public ResourcesCommandLineModule(
     IWorld world,
     IForestManager forestManager,
     ICityManager cityManager,
     ILocker locker,
     IObjectTypeFactory objectTypeFactory,
     Formula formula,
     UnitFactory unitFactory)
 {
     this.forestManager     = forestManager;
     this.cityManager       = cityManager;
     this.locker            = locker;
     this.objectTypeFactory = objectTypeFactory;
     this.formula           = formula;
     this.unitFactory       = unitFactory;
     this.world             = world;
 }
Example #17
0
 public ForestCampBuildActiveAction(Formula formula,
                                    IWorld world,
                                    IObjectTypeFactory objectTypeFactory,
                                    IStructureCsvFactory structureCsvFactory,
                                    IForestManager forestManager,
                                    ILocker locker,
                                    ITileLocator tileLocator,
                                    CallbackProcedure callbackProcedure)
 {
     this.formula             = formula;
     this.world               = world;
     this.objectTypeFactory   = objectTypeFactory;
     this.structureCsvFactory = structureCsvFactory;
     this.forestManager       = forestManager;
     this.locker              = locker;
     this.tileLocator         = tileLocator;
     this.callbackProcedure   = callbackProcedure;
 }
Example #18
0
 public StructureCommandsModule(IActionFactory actionFactory,
                                IStructureCsvFactory structureCsvFactory,
                                IObjectTypeFactory objectTypeFactory,
                                PropertyFactory propertyFactory,
                                IForestManager forestManager,
                                IThemeManager themeManager,
                                IWorld world,
                                ILocker locker)
 {
     this.actionFactory       = actionFactory;
     this.structureCsvFactory = structureCsvFactory;
     this.objectTypeFactory   = objectTypeFactory;
     this.propertyFactory     = propertyFactory;
     this.forestManager       = forestManager;
     this.themeManager        = themeManager;
     this.world  = world;
     this.locker = locker;
 }
Example #19
0
 public StructureUpgradeActiveAction(IStructureCsvFactory structureCsvFactory,
                                     Formula formula,
                                     IWorld world,
                                     Procedure procedure,
                                     ILocker locker,
                                     IRequirementCsvFactory requirementCsvFactory,
                                     IObjectTypeFactory objectTypeFactory,
                                     CallbackProcedure callbackProcedure)
 {
     this.structureCsvFactory = structureCsvFactory;
     this.formula             = formula;
     this.world                 = world;
     this.procedure             = procedure;
     this.locker                = locker;
     this.requirementCsvFactory = requirementCsvFactory;
     this.objectTypeFactory     = objectTypeFactory;
     this.callbackProcedure     = callbackProcedure;
 }
Example #20
0
 public ForestCampBuildActiveAction(uint cityId,
                                    uint lumbermillId,
                                    uint forestId,
                                    ushort campType,
                                    ushort labors,
                                    Formula formula,
                                    IWorld world,
                                    IObjectTypeFactory objectTypeFactory,
                                    IStructureCsvFactory structureCsvFactory,
                                    IForestManager forestManager,
                                    ILocker locker,
                                    ITileLocator tileLocator,
                                    CallbackProcedure callbackProcedure)
     : this(formula, world, objectTypeFactory, structureCsvFactory, forestManager, locker, tileLocator, callbackProcedure)
 {
     this.cityId       = cityId;
     this.lumbermillId = lumbermillId;
     this.forestId     = forestId;
     this.labors       = labors;
     this.campType     = campType;
 }
Example #21
0
 public StructureBuildActiveAction(IObjectTypeFactory objectTypeFactory,
                                   IWorld world,
                                   Formula formula,
                                   IRequirementCsvFactory requirementCsvFactory,
                                   IStructureCsvFactory structureCsvFactory,
                                   ILocker concurrency,
                                   Procedure procedure,
                                   IRoadPathFinder roadPathFinder,
                                   ITileLocator tileLocator,
                                   CallbackProcedure callbackProcedure)
 {
     this.objectTypeFactory     = objectTypeFactory;
     this.world                 = world;
     this.formula               = formula;
     this.requirementCsvFactory = requirementCsvFactory;
     this.structureCsvFactory   = structureCsvFactory;
     this.concurrency           = concurrency;
     this.procedure             = procedure;
     this.roadPathFinder        = roadPathFinder;
     this.tileLocator           = tileLocator;
     this.callbackProcedure     = callbackProcedure;
 }
Example #22
0
 public CityCreatePassiveAction(uint cityId,
                                uint x,
                                uint y,
                                string cityName,
                                IActionFactory actionFactory,
                                ICityRemoverFactory cityRemoverFactory,
                                Formula formula,
                                IWorld world,
                                ILocker locker,
                                IObjectTypeFactory objectTypeFactory,
                                IStructureCsvFactory structureCsvFactory,
                                ICityFactory cityFactory,
                                Procedure procedure,
                                IBarbarianTribeManager barbarianTribeManager,
                                CallbackProcedure callbackProcedure)
     : this(actionFactory, cityRemoverFactory, formula, world, locker, objectTypeFactory, structureCsvFactory, cityFactory, procedure, barbarianTribeManager, callbackProcedure)
 {
     this.cityId   = cityId;
     this.x        = x;
     this.y        = y;
     this.cityName = cityName;
 }
Example #23
0
 public StructureBuildActiveAction(uint cityId,
                                   ushort type,
                                   uint x,
                                   uint y,
                                   byte level,
                                   IObjectTypeFactory objectTypeFactory,
                                   IWorld world,
                                   Formula formula,
                                   IRequirementCsvFactory requirementCsvFactory,
                                   IStructureCsvFactory structureCsvFactory,
                                   ILocker concurrency,
                                   Procedure procedure,
                                   IRoadPathFinder roadPathFinder,
                                   ITileLocator tileLocator,
                                   CallbackProcedure callbackProcedure)
     : this(objectTypeFactory, world, formula, requirementCsvFactory, structureCsvFactory, concurrency, procedure, roadPathFinder, tileLocator, callbackProcedure)
 {
     this.cityId = cityId;
     this.type   = type;
     this.X      = x;
     this.Y      = y;
     this.level  = level;
 }
Example #24
0
 public CityCreatePassiveAction(IActionFactory actionFactory,
                                ICityRemoverFactory cityRemoverFactory,
                                Formula formula,
                                IWorld world,
                                ILocker locker,
                                IObjectTypeFactory objectTypeFactory,
                                IStructureCsvFactory structureCsvFactory,
                                ICityFactory cityFactory,
                                Procedure procedure,
                                IBarbarianTribeManager barbarianTribeManager,
                                CallbackProcedure callbackProcedure)
 {
     this.actionFactory      = actionFactory;
     this.cityRemoverFactory = cityRemoverFactory;
     this.formula            = formula;
     this.world                 = world;
     this.locker                = locker;
     this.objectTypeFactory     = objectTypeFactory;
     this.structureCsvFactory   = structureCsvFactory;
     this.cityFactory           = cityFactory;
     this.procedure             = procedure;
     this.barbarianTribeManager = barbarianTribeManager;
     this.callbackProcedure     = callbackProcedure;
 }
Example #25
0
 public FactoriesInitializer(ActionRequirementFactory actionRequirementFactory,
                             IStructureCsvFactory structureCsvFactory,
                             EffectRequirementFactory effectRequirementFactory,
                             InitFactory initFactory,
                             PropertyFactory propertyFactory,
                             IRequirementCsvFactory requirementCsvFactory,
                             TechnologyFactory technologyFactory,
                             UnitFactory unitFactory,
                             IObjectTypeFactory objectTypeFactory,
                             UnitModFactory unitModFactory,
                             MapFactory mapFactory)
 {
     this.actionRequirementFactory = actionRequirementFactory;
     this.structureCsvFactory      = structureCsvFactory;
     this.effectRequirementFactory = effectRequirementFactory;
     this.initFactory           = initFactory;
     this.propertyFactory       = propertyFactory;
     this.requirementCsvFactory = requirementCsvFactory;
     this.technologyFactory     = technologyFactory;
     this.unitFactory           = unitFactory;
     this.objectTypeFactory     = objectTypeFactory;
     this.unitModFactory        = unitModFactory;
     this.mapFactory            = mapFactory;
 }
Example #26
0
        public CityPassiveAction(IObjectTypeFactory objectTypeFactory,
                                 ILocker locker,
                                 Formula formula,
                                 IActionFactory actionFactory,
                                 Procedure procedure,
                                 IGameObjectLocator locator,
                                 IBattleFormulas battleFormulas,
                                 IStructureCsvFactory structureFactory,
                                 TechnologyFactory technologyFactory,
                                 UnitFactory unitFactory)
        {
            this.objectTypeFactory = objectTypeFactory;
            this.locker            = locker;
            this.formula           = formula;
            this.actionFactory     = actionFactory;
            this.procedure         = procedure;
            this.locator           = locator;
            this.battleFormulas    = battleFormulas;
            this.structureFactory  = structureFactory;
            this.technologyFactory = technologyFactory;
            this.unitFactory       = unitFactory;

            CreateSubscriptions();
        }
Example #27
0
 public BattleFormulas(UnitModFactory unitModFactory, UnitFactory unitFactory, IObjectTypeFactory objectTypeFactory)
 {
     this.unitModFactory    = unitModFactory;
     this.unitFactory       = unitFactory;
     this.objectTypeFactory = objectTypeFactory;
 }
Example #28
0
 public ForestCampLaborUpdatePassiveAction(Formula formula, IObjectTypeFactory objectTypeFactory)
 {
     this.formula           = formula;
     this.objectTypeFactory = objectTypeFactory;
 }
Example #29
0
 private static void Update(IObjectTypeFactory nodeDesign, UAObjectType nodeSet)
 {
 }
Example #30
0
        public virtual Error CityMaxConcurrentBuildActions(ushort structureType, uint currentActionId, ICity city, IObjectTypeFactory objectTypeFactory)
        {
            int maxConcurrentUpgrades = ConcurrentBuildUpgrades(city.MainBuilding.Lvl);

            if (!objectTypeFactory.IsObjectType("UnlimitedBuilding", structureType) &&
                city.Worker.ActiveActions.Values.Count(action =>
            {
                if (action.ActionId == currentActionId)
                {
                    return(false);
                }

                if (action.Type == ActionType.StructureUpgradeActive)
                {
                    return(true);
                }

                if (action.Type != ActionType.StructureBuildActive)
                {
                    return(false);
                }

                return(!objectTypeFactory.IsObjectType("UnlimitedBuilding", ((StructureBuildActiveAction)action).BuildType));
            }) >= maxConcurrentUpgrades)
            {
                return(Error.ActionTotalMaxReached);
            }

            return(Error.Ok);
        }