Exemple #1
0
        private static List <Microsoft.Xna.Framework.Rectangle> CreateRooms(Point origin)
        {
            Point result;

            if (!WorldUtils.Find(origin, Searches.Chain((GenSearch) new Searches.Down(200), (GenCondition) new Conditions.IsSolid()), out result) || result == origin)
            {
                return(new List <Microsoft.Xna.Framework.Rectangle>());
            }
            Microsoft.Xna.Framework.Rectangle room1 = HouseUtils.FindRoom(result);
            Microsoft.Xna.Framework.Rectangle room2 = HouseUtils.FindRoom(new Point(room1.Center.X, room1.Y + 1));
            Microsoft.Xna.Framework.Rectangle room3 = HouseUtils.FindRoom(new Point(room1.Center.X, room1.Y + room1.Height + 10));
            room3.Y = room1.Y + room1.Height - 1;
            float roomSolidPrecentage1 = HouseUtils.GetRoomSolidPrecentage(room2);
            float roomSolidPrecentage2 = HouseUtils.GetRoomSolidPrecentage(room3);

            room1.Y += 3;
            room2.Y += 3;
            room3.Y += 3;
            List <Microsoft.Xna.Framework.Rectangle> rectangleList = new List <Microsoft.Xna.Framework.Rectangle>();

            if ((double)WorldGen.genRand.NextFloat() > (double)roomSolidPrecentage1 + 0.200000002980232)
            {
                rectangleList.Add(room2);
            }
            rectangleList.Add(room1);
            if ((double)WorldGen.genRand.NextFloat() > (double)roomSolidPrecentage2 + 0.200000002980232)
            {
                rectangleList.Add(room3);
            }
            return(rectangleList);
        }
Exemple #2
0
        public static HouseBuilder CreateBuilder(Point origin, StructureMap structures)
        {
            List <Microsoft.Xna.Framework.Rectangle> rooms = HouseUtils.CreateRooms(origin);

            if (rooms.Count == 0 || !HouseUtils.AreRoomLocationsValid((IEnumerable <Microsoft.Xna.Framework.Rectangle>)rooms))
            {
                return(HouseBuilder.Invalid);
            }
            HouseType houseType = HouseUtils.GetHouseType((IEnumerable <Microsoft.Xna.Framework.Rectangle>)rooms);

            if (!HouseUtils.AreRoomsValid((IEnumerable <Microsoft.Xna.Framework.Rectangle>)rooms, structures, houseType))
            {
                return(HouseBuilder.Invalid);
            }
            switch (houseType)
            {
            case HouseType.Wood:
                return((HouseBuilder) new WoodHouseBuilder((IEnumerable <Microsoft.Xna.Framework.Rectangle>)rooms));

            case HouseType.Ice:
                return((HouseBuilder) new IceHouseBuilder((IEnumerable <Microsoft.Xna.Framework.Rectangle>)rooms));

            case HouseType.Desert:
                return((HouseBuilder) new DesertHouseBuilder((IEnumerable <Microsoft.Xna.Framework.Rectangle>)rooms));

            case HouseType.Jungle:
                return((HouseBuilder) new JungleHouseBuilder((IEnumerable <Microsoft.Xna.Framework.Rectangle>)rooms));

            case HouseType.Mushroom:
                return((HouseBuilder) new MushroomHouseBuilder((IEnumerable <Microsoft.Xna.Framework.Rectangle>)rooms));

            case HouseType.Granite:
                return((HouseBuilder) new GraniteHouseBuilder((IEnumerable <Microsoft.Xna.Framework.Rectangle>)rooms));

            case HouseType.Marble:
                return((HouseBuilder) new MarbleHouseBuilder((IEnumerable <Microsoft.Xna.Framework.Rectangle>)rooms));

            default:
                return((HouseBuilder) new WoodHouseBuilder((IEnumerable <Microsoft.Xna.Framework.Rectangle>)rooms));
            }
        }