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_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 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 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 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 Region(byte[] map, DefaultMultiObjectLock.Factory lockerFactory, IRegionLocator regionLocator, IRegionObjectListFactory regionObjectListFactory) { this.map = map; this.lockerFactory = lockerFactory; this.regionLocator = regionLocator; tileObjects = regionObjectListFactory.CreateRegionObjectList(); primaryObjects = regionObjectListFactory.CreateRegionObjectList(); }
public CityChannel(Util.IChannel channel, Procedure procedure, Formula formula, IRegionManager regionManager, IRegionLocator regionLocator, IBattleFormulas battleFormulas) { this.channel = channel; this.procedure = procedure; this.formula = formula; this.regionManager = regionManager; this.regionLocator = regionLocator; this.battleFormulas = battleFormulas; }
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 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 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 Add_ShouldAddObjectToPrimaryRegion( ISimpleGameObject simpleGameObject, [Frozen] IRegionLocator regionLocator, IRegion region0, IRegion region1, RegionManager regionManager) { simpleGameObject.PrimaryPosition.Returns(new Position(1, 2)); regionLocator.GetRegionIndex(simpleGameObject.PrimaryPosition.X, simpleGameObject.PrimaryPosition.Y).Returns <ushort>(1); regionManager.AddRegion(region0); regionManager.AddRegion(region1); regionManager.Add(simpleGameObject); region0.DidNotReceive().Add(simpleGameObject); region1.Received(1).Add(simpleGameObject); }
public void LockRegions_WhenCalledWithMultipleRegions_ShouldLockRegionInProperOrder( [Frozen] ITileLocator tileLocator, IRegion region1, IRegion region2, IRegion region3, IRegion region4, [Frozen] IRegionLocator regionLocator, RegionManager regionManager) { var lockedRegions = new List <IRegion>(); region1.When(p => p.EnterWriteLock()).Do(x => lockedRegions.Add(region1)); region2.When(p => p.EnterWriteLock()).Do(x => lockedRegions.Add(region2)); region3.When(p => p.EnterWriteLock()).Do(x => lockedRegions.Add(region3)); region4.When(p => p.EnterWriteLock()).Do(x => lockedRegions.Add(region4)); regionManager.AddRegion(region1); regionManager.AddRegion(region2); regionManager.AddRegion(region3); regionManager.AddRegion(region4); regionLocator.GetRegionIndex(0, 0).ReturnsForAnyArgs <ushort>(3); regionLocator.GetRegionIndex(0, 1).Returns <ushort>(0); regionLocator.GetRegionIndex(0, 2).Returns <ushort>(0); regionLocator.GetRegionIndex(1, 1).Returns <ushort>(1); regionLocator.GetRegionIndex(2, 1).Returns <ushort>(2); tileLocator.ForeachMultitile(10, 20, 3).Returns(new[] { new Position(1, 1), new Position(0, 1), new Position(2, 1), new Position(0, 2), }); var result = regionManager.LockMultitileRegions(10, 20, 3); lockedRegions.Should().Equal(region1, region2, region3); result.Should().Equal(new ushort[] { 0, 1, 2 }); }
public void Remove_RemovesObjectFromAllTiles( ISimpleGameObject simpleGameObject, [Frozen] IRegionLocator regionLocator, IRegion region0, IRegion region1, IRegion region2, [Frozen] ITileLocator tileLocator, RegionManager regionManager) { simpleGameObject.InWorld.Returns(true); simpleGameObject.PrimaryPosition.Returns(new Position(1, 2)); simpleGameObject.Size.Returns <byte>(10); 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(1, 2, 10).Returns(new[] { new Position(1, 1), new Position(1, 2), new Position(2, 1), }); regionManager.AddRegion(region0); regionManager.AddRegion(region1); regionManager.AddRegion(region2); regionManager.Remove(simpleGameObject); region0.Received(1).Remove(simpleGameObject, 1, 2); region0.Received(1).RemoveObjectFromTile(simpleGameObject, 1, 1); region0.Received(1).RemoveObjectFromTile(simpleGameObject, 1, 2); region1.Received(1).RemoveObjectFromTile(simpleGameObject, 2, 1); region2.DidNotReceive().RemoveObjectFromTile(Arg.Any <ISimpleGameObject>(), Arg.Any <uint>(), Arg.Any <uint>()); }
public RegionObjectList(IRegionLocator regionLocator) { this.regionLocator = regionLocator; }