Пример #1
0
 public Formula(IObjectTypeFactory objectTypeFactory, UnitFactory unitFactory, IStructureCsvFactory structureFactory, ISystemVariableManager systemVariableManager)
 {
     SystemVariableManager = systemVariableManager;
     ObjectTypeFactory     = objectTypeFactory;
     UnitFactory           = unitFactory;
     StructureCsvFactory   = structureFactory;
 }
Пример #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);
        }
Пример #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);
        }
Пример #4
0
 public ResourceGatherActiveAction(ILocker locker,
                                   IObjectTypeFactory objectTypeFactory,
                                   IWorld world,
                                   IActionFactory actionFactory)
 {
     this.locker            = locker;
     this.objectTypeFactory = objectTypeFactory;
     this.world             = world;
     this.actionFactory     = actionFactory;
 }
Пример #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);
        }
Пример #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;
 }
Пример #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;
 }
Пример #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;
 }
Пример #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);
        }
Пример #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;
 }
Пример #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;
 }
Пример #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;
        }
Пример #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;
 }
Пример #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;
        }
Пример #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;
 }
Пример #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;
 }
Пример #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;
 }
Пример #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;
 }
Пример #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;
 }
Пример #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;
 }
Пример #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;
 }
Пример #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;
 }
Пример #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;
 }
Пример #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;
 }
Пример #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;
 }
Пример #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();
        }
Пример #27
0
 public BattleFormulas(UnitModFactory unitModFactory, UnitFactory unitFactory, IObjectTypeFactory objectTypeFactory)
 {
     this.unitModFactory    = unitModFactory;
     this.unitFactory       = unitFactory;
     this.objectTypeFactory = objectTypeFactory;
 }
Пример #28
0
 public ForestCampLaborUpdatePassiveAction(Formula formula, IObjectTypeFactory objectTypeFactory)
 {
     this.formula           = formula;
     this.objectTypeFactory = objectTypeFactory;
 }
Пример #29
0
 private static void Update(IObjectTypeFactory nodeDesign, UAObjectType nodeSet)
 {
 }
Пример #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);
        }