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); }
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)); } }