public AttackCombatUnit(uint id, uint battleId, ITroopObject troopObject, FormationType formation, ushort type, byte lvl, ushort count, UnitFactory unitFactory, IBattleFormulas battleFormulas, Formula formula, ITileLocator tileLocator, IDbManager dbManager) : base(id, battleId, battleFormulas, dbManager) { this.troopObject = troopObject; this.formation = formation; this.type = type; this.count = count; this.formula = formula; this.tileLocator = tileLocator; this.lvl = lvl; stats = troopObject.Stub.Template[type]; LeftOverHp = stats.MaxHp; eachUnitUpkeep = unitFactory.GetUnitStats(type, lvl).Upkeep; }
public void Remove_ProperlyLocksRegions( ISimpleGameObject simpleGameObject, [Frozen] IRegionLocator regionLocator, IRegion region0, IRegion region1, IRegion region2, [Frozen] ITileLocator tileLocator, RegionManager regionManager) { simpleGameObject.InWorld.Returns(true); regionLocator.GetRegionIndex(0, 0).ReturnsForAnyArgs <ushort>(2); regionLocator.GetRegionIndex(1, 1).Returns <ushort>(0); regionLocator.GetRegionIndex(1, 2).Returns <ushort>(0); regionLocator.GetRegionIndex(2, 1).Returns <ushort>(1); tileLocator.ForeachMultitile(0, 0, 0).ReturnsForAnyArgs(new[] { new Position(1, 1), new Position(2, 1), }); regionManager.AddRegion(region0); regionManager.AddRegion(region1); regionManager.AddRegion(region2); regionManager.Remove(simpleGameObject); region0.Received(1).EnterWriteLock(); region1.Received(1).EnterWriteLock(); region0.Received(1).ExitWriteLock(); region1.Received(1).ExitWriteLock(); region2.DidNotReceive().EnterWriteLock(); }
public void Add_WhenSomeTilesAreInInvalidRegion_ShouldIgnoreRegions( ISimpleGameObject simpleGameObject, [Frozen] IRegionLocator regionLocator, IRegion region0, [Frozen] ITileLocator tileLocator, RegionManager regionManager) { simpleGameObject.PrimaryPosition.Returns(new Position(1, 1)); regionLocator.GetRegionIndex(0, 0).ReturnsForAnyArgs <ushort>(2); regionLocator.GetRegionIndex(1, 1).Returns <ushort>(0); regionLocator.GetRegionIndex(2, 1).Returns <ushort>(1); tileLocator.ForeachMultitile(simpleGameObject).Returns(new[] { new Position(1, 1), new Position(2, 1), }); regionManager.AddRegion(region0); regionManager.Add(simpleGameObject); region0.Received(1).AddObjectToTile(simpleGameObject, 1, 1); }
public void ObjectUpdateEvent_LocksBothPreviousAndCurrentRegions( ISimpleGameObject simpleGameObject, [Frozen] IRegionLocator regionLocator, IRegion region0, IRegion region1, [Frozen] ITileLocator tileLocator, RegionManager regionManager) { simpleGameObject.InWorld.Returns(true); simpleGameObject.Size.Returns <byte>(11); simpleGameObject.PrimaryPosition.Returns(new Position(1, 2)); regionManager.AddRegion(region0); regionManager.AddRegion(region1); regionLocator.GetRegionIndex(1, 9).Returns <ushort>(0); regionLocator.GetRegionIndex(2, 9).Returns <ushort>(1); tileLocator.ForeachMultitile(1, 2, 11).Returns(new[] { new Position(1, 9) }); tileLocator.ForeachMultitile(2, 3, 11).Returns(new[] { new Position(2, 9) }); regionManager.UpdateObject(simpleGameObject, 2, 3); region0.Received(1).EnterWriteLock(); region1.Received(1).EnterWriteLock(); region0.Received(1).ExitWriteLock(); region1.Received(1).ExitWriteLock(); }
public void Remove_WhenATileIsInInvalidRegion_RemovesFromAllOtherTilesAndIgnoresInvalidTile( ISimpleGameObject simpleGameObject, [Frozen] IRegionLocator regionLocator, IRegion region0, [Frozen] ITileLocator tileLocator, RegionManager regionManager) { simpleGameObject.InWorld.Returns(true); simpleGameObject.PrimaryPosition.Returns(new Position(1, 2)); regionLocator.GetRegionIndex(1, 1).Returns <ushort>(0); regionLocator.GetRegionIndex(2, 1).Returns <ushort>(1); tileLocator.ForeachMultitile(0, 0, 0).ReturnsForAnyArgs(new[] { new Position(1, 1), new Position(2, 1), }); regionManager.AddRegion(region0); regionManager.Remove(simpleGameObject); region0.Received(1).Remove(simpleGameObject, 1, 2); region0.Received(1).RemoveObjectFromTile(simpleGameObject, 1, 1); }
public StrongholdConfigurator(NameGenerator nameGenerator, MapFactory mapFactory, ITileLocator tileLocator, IRegionManager regionManager) { this.nameGenerator = nameGenerator; this.mapFactory = mapFactory; this.tileLocator = tileLocator; this.regionManager = regionManager; }
public CombatStructure(uint id, uint battleId, IStructure structure, BattleStats stats, decimal hp, ushort type, byte lvl, string theme, Formula formula, IActionFactory actionFactory, IBattleFormulas battleFormulas, ITileLocator tileLocator, IRegionManager regionManager, IDbManager dbManager) : base(id, battleId, battleFormulas, dbManager) { Structure = structure; this.formula = formula; this.actionFactory = actionFactory; this.tileLocator = tileLocator; this.regionManager = regionManager; this.stats = stats; this.hp = hp; this.type = type; this.lvl = lvl; this.Theme = theme; }
public StrongholdManager(IStrongholdConfigurator strongholdConfigurator, IStrongholdFactory strongholdFactory, IRegionManager regionManager, Chat chat, IDbManager dbManager, ISimpleStubGeneratorFactory simpleStubGeneratorFactory, Formula formula, ICityManager cityManager, IActionFactory actionFactory, ITileLocator tileLocator, ITroopObjectInitializerFactory troopInitializerFactory) { idGenerator = new LargeIdGenerator(Config.stronghold_id_max, Config.stronghold_id_min); strongholds = new ConcurrentDictionary <uint, IStronghold>(); this.strongholdConfigurator = strongholdConfigurator; this.strongholdFactory = strongholdFactory; this.regionManager = regionManager; this.chat = chat; this.dbManager = dbManager; this.formula = formula; this.actionFactory = actionFactory; this.tileLocator = tileLocator; this.troopInitializerFactory = troopInitializerFactory; cityManager.CityAdded += CityManagerCityAdded; simpleStubGenerator = simpleStubGeneratorFactory.CreateSimpleStubGenerator(formula.StrongholdUnitRatio(), formula.StrongholdUnitType()); }
public Tribe(IPlayer owner, string name, Procedure procedure, IDbManager dbManager, Formula formula, IAssignmentFactory assignmentFactory, ICityManager cityManager, IStrongholdManager strongholdManager, ITileLocator tileLocator, IChannel channel) : this( owner : owner, name : name, desc : string.Empty, level : 1, victoryPoints : 0, attackPoints : 0, defensePoints : 0, resource : new Resource(), created : SystemClock.Now, procedure : procedure, dbManager : dbManager, formula : formula, assignmentFactory : assignmentFactory, cityManager : cityManager, strongholdManager : strongholdManager, tileLocator : tileLocator, channel : channel) { }
public void Add_ShouldAddObjectToAllTiles( ISimpleGameObject simpleGameObject, [Frozen] IRegionLocator regionLocator, IRegion region0, IRegion region1, IRegion region2, [Frozen] ITileLocator tileLocator, RegionManager regionManager) { simpleGameObject.PrimaryPosition.Returns(new Position(1, 2)); regionLocator.GetRegionIndex(0, 0).ReturnsForAnyArgs <ushort>(2); regionLocator.GetRegionIndex(1, 1).Returns <ushort>(0); regionLocator.GetRegionIndex(1, 2).Returns <ushort>(0); regionLocator.GetRegionIndex(2, 1).Returns <ushort>(1); tileLocator.ForeachMultitile(simpleGameObject).Returns(new[] { new Position(1, 1), new Position(1, 2), new Position(2, 1), }); regionManager.AddRegion(region0); regionManager.AddRegion(region1); regionManager.AddRegion(region2); regionManager.Add(simpleGameObject); region0.Received(1).AddObjectToTile(simpleGameObject, 1, 1); region0.Received(1).AddObjectToTile(simpleGameObject, 1, 2); region1.Received(1).AddObjectToTile(simpleGameObject, 2, 1); region2.DidNotReceive().AddObjectToTile(Arg.Any <ISimpleGameObject>(), Arg.Any <uint>(), Arg.Any <uint>()); }
public CombatList(IDbManager manager, ITileLocator tileLocator, IBattleFormulas battleFormulas) : base(manager) { this.tileLocator = tileLocator; this.battleFormulas = battleFormulas; ItemAdded += ObjectAdded; }
public ResourceSendActiveAction(ITileLocator tileLocator, IWorld world, Formula formula, ILocker locker) { this.tileLocator = tileLocator; this.world = world; this.formula = formula; this.locker = locker; }
public TroopMovePassiveAction(Formula formula, ITileLocator tileLocator, IGameObjectLocator world, ILocker locker) { this.formula = formula; this.tileLocator = tileLocator; this.world = world; this.locker = locker; }
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); }
public RegionManager(IMiniMapRegionManagerFactory miniMapRegionManagerFactory, IRegionFactory regionFactory, ITileLocator tileLocator, IChannel channel, IRegionLocator regionLocator) { this.miniMapRegionManagerFactory = miniMapRegionManagerFactory; this.regionFactory = regionFactory; this.tileLocator = tileLocator; this.channel = channel; this.regionLocator = regionLocator; }
public void Execute_WhenAStructureTileIsNotValid_ReturnsError( [Frozen] IWorld world, [Frozen] ITileLocator tileLocator, Fixture fixture) { var action = new StructureBuildActiveActionExecuteBuilder(fixture).Build(); world.Regions.IsValidXandY(1, 1).Returns(true); world.Regions.IsValidXandY(1, 2).Returns(false); tileLocator.ForeachMultitile(0, 0, 0).ReturnsForAnyArgs(new[] { new Position(1, 1), new Position(1, 2) }); action.Execute().Should().Be(Error.ActionInvalid); }
public BarbarianTribeManager(IDbManager dbManager, IBarbarianTribeFactory barbarianTribeFactory, IBarbarianTribeConfigurator barbarianTribeConfigurator, IRegionManager regionManager, DefaultMultiObjectLock.Factory multiObjectLockFactory, ITileLocator tileLocator) { this.dbManager = dbManager; this.barbarianTribeFactory = barbarianTribeFactory; this.barbarianTribeConfigurator = barbarianTribeConfigurator; this.regionManager = regionManager; this.multiObjectLockFactory = multiObjectLockFactory; this.tileLocator = tileLocator; }
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; }
public ResourceSendActiveAction(uint cityId, uint structureId, uint targetCityId, Resource resource, ITileLocator tileLocator, IWorld world, Formula formula, ILocker locker) : this(tileLocator, world, formula, locker) { this.cityId = cityId; this.structureId = structureId; this.targetCityId = targetCityId; this.resource = new Resource(resource); }
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; }
public StrongholdCommandLineModule(ITribeManager tribeManager, IWorld world, ILocker locker, IStrongholdManager strongholdManager, MapFactory mapFactory, Formula formula, ITileLocator tileLocator) { this.tribeManager = tribeManager; this.world = world; this.locker = locker; this.strongholdManager = strongholdManager; this.mapFactory = mapFactory; this.formula = formula; this.tileLocator = tileLocator; }
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; }
public StrongholdActivationChecker(IStrongholdManager strongholdManager, IStrongholdActivationCondition strongholdActivationCondition, IScheduler scheduler, ILocker locker, ITileLocator tileLocator, ISystemVariableManager systemVariableManager, IDbManager dbManager) { this.strongholdManager = strongholdManager; this.strongholdActivationCondition = strongholdActivationCondition; this.scheduler = scheduler; this.locker = locker; this.tileLocator = tileLocator; this.systemVariableManager = systemVariableManager; this.dbManager = dbManager; }
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; }
public TroopMovePassiveAction(uint cityId, uint troopObjectId, uint x, uint y, bool isReturningHome, bool isAttacking, Formula formula, ITileLocator tileLocator, IGameObjectLocator world, ILocker locker) : this(formula, tileLocator, world, locker) { this.cityId = cityId; this.troopObjectId = troopObjectId; this.x = x; this.y = y; this.isReturningHome = isReturningHome; this.isAttacking = isAttacking; }
public void Execute_WhenAllStructureTilesAreValid_ReturnsOk( [Frozen] IWorld world, [Frozen] ITileLocator tileLocator, [Frozen] IStructureBaseStats structureBaseStats, Fixture fixture) { var action = new StructureBuildActiveActionExecuteBuilder(fixture).Build(); structureBaseStats.Size.Returns <byte>(11); tileLocator.ForeachMultitile(action.X, action.Y, 11).Returns(new[] { new Position(1, 1), new Position(1, 2) }); world.Regions.IsValidXandY(Arg.Any <uint>(), Arg.Any <uint>()).Returns(false); world.Regions.IsValidXandY(1, 1).Returns(true); world.Regions.IsValidXandY(1, 2).Returns(true); action.Execute().Should().Be(Error.Ok); }
public CityTileNextToFriendLocationStrategy(int distance, IPlayer player, MapFactory mapFactory, ITileLocator tileLocator, Random random, Formula formula, IForestManager forestManager, IWorld world) { this.distance = distance; this.player = player; this.mapFactory = mapFactory; this.tileLocator = tileLocator; this.random = random; this.formula = formula; this.forestManager = forestManager; this.world = world; }
public void LockRegions_WhenCalledWithInvalidPosition_IgnoresInvalidRegion( [Frozen] ITileLocator tileLocator, [Frozen] IRegionLocator regionLocator, RegionManager regionManager) { var lockedRegions = new List <IRegion>(); regionLocator.GetRegionIndex(0, 0).ReturnsForAnyArgs <ushort>(0); tileLocator.ForeachMultitile(10, 20, 3).Returns(new[] { new Position(1, 1), }); regionManager.LockMultitileRegions(10, 20, 3); lockedRegions.Should().BeEmpty(); }
public void Callback_WhenInactiveStrongholdsHaveSameScore_ShouldActivateClosestToCenter( [Frozen] ISystemVariableManager systemVariableManager, [Frozen] IStrongholdActivationCondition activationCondition, [Frozen] IStrongholdManager strongholdManager, [Frozen] ITileLocator tileLocator, IStronghold sh1, IStronghold sh2, IFixture fixture) { sh1.StrongholdState.Returns(StrongholdState.Inactive); sh1.PrimaryPosition.Returns(new Position(10, 20)); sh2.StrongholdState.Returns(StrongholdState.Inactive); sh2.PrimaryPosition.Returns(new Position(30, 40)); activationCondition.Score(null).ReturnsForAnyArgs(0); tileLocator.TileDistance(sh1.PrimaryPosition, 1, Arg.Any <Position>(), 1) .Returns(10); tileLocator.TileDistance(sh2.PrimaryPosition, 1, Arg.Any <Position>(), 1) .Returns(5); var lastCheckTime = Substitute.For <SystemVariable>(); lastCheckTime.Value.Returns(SystemClock.Now.AddHours(-8)); systemVariableManager["Stronghold.neutral_check"].Returns(lastCheckTime); var locker = new LockerStub(); fixture.Register <ILocker>(() => locker); strongholdManager.GetEnumerator().Returns(_ => new List <IStronghold> { sh1, sh2 }.GetEnumerator()); var checker = fixture.Create <StrongholdActivationChecker>(); checker.Callback(null); strongholdManager.Received().Activate(sh2); strongholdManager.DidNotReceive().Activate(sh1); }
/// <summary> /// DB loader constructor /// </summary> public AttackCombatUnit(uint id, uint battleId, ITroopObject troopObject, FormationType formation, ushort type, byte lvl, ushort count, decimal leftOverHp, Resource loot, UnitFactory unitFactory, IBattleFormulas battleFormulas, Formula formula, ITileLocator tileLocator, IDbManager dbManager) : this(id, battleId, troopObject, formation, type, lvl, count, unitFactory, battleFormulas, formula, tileLocator, dbManager) { LeftOverHp = leftOverHp; this.loot = loot; }