public MapDescription<int> GetMapDescription()
		{
			var mapDescription = new MapDescription<int>();
			mapDescription.SetupWithGraph(GraphsDatabase.GetExample5());

			// Add room shapes
			var doorMode = new OverlapMode(1, 1);

			var squareRoomBig = new RoomDescription(
				GridPolygon.GetSquare(8),
				doorMode
			);
			var squareRoomSmall = new RoomDescription(
				GridPolygon.GetSquare(6),
				doorMode
			);
			var rectangleRoomBig = new RoomDescription(
				GridPolygon.GetRectangle(8, 12),
				doorMode
			);
			var rectangleRoomSmall = new RoomDescription(
				GridPolygon.GetRectangle(6, 10),
				doorMode
			);

			mapDescription.AddRoomShapes(squareRoomBig, probability: 10);
			mapDescription.AddRoomShapes(squareRoomSmall);
			mapDescription.AddRoomShapes(rectangleRoomBig);
			mapDescription.AddRoomShapes(rectangleRoomSmall);

			return mapDescription;
		}
        public MapDescription <int> GetMapDescription()
        {
            var mapDescription = new MapDescription <int>();

            // Add rooms ( - you would normally use a for cycle)
            mapDescription.AddRoom(0);
            mapDescription.AddRoom(1);
            mapDescription.AddRoom(2);
            mapDescription.AddRoom(3);

            // Add passages
            mapDescription.AddPassage(0, 1);
            mapDescription.AddPassage(0, 3);
            mapDescription.AddPassage(1, 2);
            mapDescription.AddPassage(2, 3);

            // Add room shapes
            var doorMode = new OverlapMode(1, 1);

            var squareRoom = new RoomDescription(
                GridPolygon.GetSquare(8),
                doorMode
                );
            var rectangleRoom = new RoomDescription(
                GridPolygon.GetRectangle(6, 10),
                doorMode
                );

            mapDescription.AddRoomShapes(squareRoom);
            mapDescription.AddRoomShapes(rectangleRoom);

            return(mapDescription);
        }
예제 #3
0
 public VirtualAnalogKeyboard(
     Keys left,
     Keys right,
     Keys up,
     Keys down,
     OverlapMode overlapMode)
 {
     Left        = left;
     Right       = right;
     Up          = up;
     Down        = down;
     OverlapMode = overlapMode;
 }
예제 #4
0
        public void Rectangle_TwoOverlap()
        {
            var polygon           = GridPolygon.GetRectangle(3, 5);
            var mode              = new OverlapMode(1, 2);
            var doorPositions     = overlapModeHandler.GetDoorPositions(polygon, mode);
            var expectedPositions = new List <IDoorLine>()
            {
                new DoorLine(new OrthogonalLine(new IntVector2(0, 2), new IntVector2(0, 2), OrthogonalLine.Direction.Top), 1),
                new DoorLine(new OrthogonalLine(new IntVector2(3, 3), new IntVector2(3, 3), OrthogonalLine.Direction.Bottom), 1),
            };

            Assert.IsTrue(doorPositions.SequenceEqualWithoutOrder(expectedPositions));
        }
예제 #5
0
        /// <summary>
        /// Adds basic room shapes to a given map description.
        /// </summary>
        /// <typeparam name="TNode"></typeparam>
        /// <param name="mapDescription"></param>
        /// <param name="scale"></param>
        /// <returns></returns>
        public static MapDescription <TNode> AddClassicRoomShapes <TNode>(this MapDescription <TNode> mapDescription,
                                                                          IntVector2 scale)
        {
            var overlapScale = Math.Min(scale.X, scale.Y);
            var doorMode     = new OverlapMode(1 * overlapScale, 0);

            var squareRoom    = new RoomDescription(GridPolygon.GetSquare(6).Scale(scale), doorMode);
            var rectangleRoom = new RoomDescription(GridPolygon.GetRectangle(6, 9).Scale(scale), doorMode);
            var room1         = new RoomDescription(
                new GridPolygonBuilder()
                .AddPoint(0, 0)
                .AddPoint(0, 6)
                .AddPoint(3, 6)
                .AddPoint(3, 3)
                .AddPoint(6, 3)
                .AddPoint(6, 0)
                .Build().Scale(scale)
                , doorMode);
            var room2 = new RoomDescription(
                new GridPolygonBuilder()
                .AddPoint(0, 0)
                .AddPoint(0, 9)
                .AddPoint(3, 9)
                .AddPoint(3, 3)
                .AddPoint(6, 3)
                .AddPoint(6, 0)
                .Build().Scale(scale)
                , doorMode);
            var room3 = new RoomDescription(
                new GridPolygonBuilder()
                .AddPoint(0, 0)
                .AddPoint(0, 3)
                .AddPoint(3, 3)
                .AddPoint(3, 6)
                .AddPoint(6, 6)
                .AddPoint(6, 3)
                .AddPoint(9, 3)
                .AddPoint(9, 0)
                .Build().Scale(scale)
                , doorMode);

            mapDescription.AddRoomShapes(squareRoom, probability: 4);
            mapDescription.AddRoomShapes(rectangleRoom, probability: 2);
            mapDescription.AddRoomShapes(room1);
            mapDescription.AddRoomShapes(room2);
            mapDescription.AddRoomShapes(room3);

            return(mapDescription);
        }
예제 #6
0
        public void Rectangle_LengthZero()
        {
            var polygon           = GridPolygon.GetRectangle(3, 5);
            var mode              = new OverlapMode(0, 0);
            var doorPositions     = overlapModeHandler.GetDoorPositions(polygon, mode);
            var expectedPositions = new List <IDoorLine>()
            {
                new DoorLine(new OrthogonalLine(new IntVector2(0, 0), new IntVector2(0, 5)), 0),
                new DoorLine(new OrthogonalLine(new IntVector2(0, 5), new IntVector2(3, 5)), 0),
                new DoorLine(new OrthogonalLine(new IntVector2(3, 5), new IntVector2(3, 0)), 0),
                new DoorLine(new OrthogonalLine(new IntVector2(3, 0), new IntVector2(0, 0)), 0),
            };

            Assert.IsTrue(doorPositions.SequenceEqualWithoutOrder(expectedPositions));
        }
예제 #7
0
        public void Rectangle_OneOverlap()
        {
            var polygon           = GridPolygon.GetRectangle(3, 5);
            var mode              = new OverlapMode(1, 1);
            var doorPositions     = overlapModeHandler.GetDoorPositions(polygon, mode);
            var expectedPositions = new List <IDoorLine>()
            {
                new DoorLine(new OrthogonalLine(new IntVector2(0, 1), new IntVector2(0, 3)), 1),
                new DoorLine(new OrthogonalLine(new IntVector2(1, 5), new IntVector2(1, 5), OrthogonalLine.Direction.Right), 1),
                new DoorLine(new OrthogonalLine(new IntVector2(3, 4), new IntVector2(3, 2)), 1),
                new DoorLine(new OrthogonalLine(new IntVector2(2, 0), new IntVector2(2, 0), OrthogonalLine.Direction.Left), 1),
            };

            Assert.IsTrue(doorPositions.SequenceEqualWithoutOrder(expectedPositions));
        }
        public MapDescription <int> GetMapDescription()
        {
            var mapDescription = new MapDescription <int>();

            mapDescription.SetupWithGraph(GraphsDatabase.GetExample1());

            // Add room shapes
            var doorMode = new OverlapMode(1, 1);

            var squareRoom = new RoomDescription(
                GridPolygon.GetSquare(8),
                doorMode
                );
            var rectangleRoom = new RoomDescription(
                GridPolygon.GetRectangle(6, 10),
                doorMode
                );

            mapDescription.AddRoomShapes(squareRoom);
            mapDescription.AddRoomShapes(rectangleRoom);

            // Setup corridor shapes
            var corridorRoom = new RoomDescription(
                GridPolygon.GetSquare(1),
                new SpecificPositionsMode(new List <OrthogonalLine>()
            {
                new OrthogonalLine(new IntVector2(0, 0), new IntVector2(1, 0)),
                new OrthogonalLine(new IntVector2(0, 1), new IntVector2(1, 1))
            })
                );

            mapDescription.AddCorridorShapes(corridorRoom);

            // Enable corridors
            mapDescription.SetWithCorridors(true, new List <int>()
            {
                1
            });

            return(mapDescription);
        }
		public MapDescription<int> GetMapDescription()
		{
			var mapDescription = new MapDescription<int>();
			mapDescription.SetupWithGraph(GraphsDatabase.GetExample2());

			// Add room shapes
			var doorMode = new OverlapMode(1, 1);

			var squareRoom = new RoomDescription(
				GridPolygon.GetSquare(8),
				doorMode
			);
			var rectangleRoom = new RoomDescription(
				GridPolygon.GetRectangle(6, 10),
				doorMode
			);

			mapDescription.AddRoomShapes(squareRoom);
			mapDescription.AddRoomShapes(rectangleRoom);

			// Add boss room shape
			var bossRoom = new RoomDescription(
				new GridPolygonBuilder()
					.AddPoint(2, 0).AddPoint(2, 1).AddPoint(1, 1).AddPoint(1, 2)
					.AddPoint(0, 2).AddPoint(0, 7).AddPoint(1, 7).AddPoint(1, 8)
					.AddPoint(2, 8).AddPoint(2, 9).AddPoint(7, 9).AddPoint(7, 8)
					.AddPoint(8, 8).AddPoint(8, 7).AddPoint(9, 7).AddPoint(9, 2)
					.AddPoint(8, 2).AddPoint(8, 1).AddPoint(7, 1).AddPoint(7, 0)
				.Build().Scale(new IntVector2(2, 2)),
				new OverlapMode(1, 1)
			);

			mapDescription.AddRoomShapes(8, bossRoom);

			return mapDescription;
		}
예제 #10
0
 public VirtualAxisKeyboard(Keys positive, Keys negative, OverlapMode overlapMode)
 {
     Positive    = positive;
     Negative    = negative;
     OverlapMode = overlapMode;
 }
예제 #11
0
 public static PluginConfigurationWrapper <LoadingOverlapUiConfig> Overlap(
     this PluginConfigurationWrapper <LoadingOverlapUiConfig> ui, OverlapMode what = OverlapMode.BodyOnly, string tempalteId = "loadingOverlap")
 {
     ui.Configuration.Overlaps[string.Format("${0}", what)] = tempalteId;
     return(ui);
 }