public static RoomData InitializeData() { Dictionary <ResourceLibrary.ResourceType, ResourceAmount> bedroomResources = new Dictionary <ResourceLibrary.ResourceType, ResourceAmount>(); ResourceAmount woodRequired = new ResourceAmount { ResourceType = ResourceLibrary.Resources[ResourceLibrary.ResourceType.Wood], NumResources = 1 }; bedroomResources[ResourceLibrary.ResourceType.Wood] = woodRequired; List <RoomTemplate> bedroomTemplates = new List <RoomTemplate>(); RoomTile[,] bedTemplate = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Pillow, RoomTile.Bed }, { RoomTile.None, RoomTile.Open, RoomTile.None } }; RoomTile[,] bedAccessories = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.Chair, RoomTile.None } }; RoomTemplate bed = new RoomTemplate(PlacementType.All, bedTemplate, bedAccessories); RoomTile[,] lampTemplate = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Lamp } }; RoomTile[,] lampAccessories = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTemplate lamp = new RoomTemplate(PlacementType.All, lampTemplate, lampAccessories); bedroomTemplates.Add(lamp); bedroomTemplates.Add(bed); Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return(new RoomData(BedRoomName, 0, "BrownTileFloor", bedroomResources, bedroomTemplates, new ImageFrame(roomIcons, 16, 2, 1)) { Description = "Dwarves relax and rest here", CanBuildAboveGround = false }); }
public static RoomData InitializeData() { RoomTile[,] lampTemplate = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Lamp } }; RoomTile[,] lampAccessories = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTemplate lamp = new RoomTemplate(PlacementType.All, lampTemplate, lampAccessories); ResourceAmount woodRequired = new ResourceAmount { ResourceType = ResourceLibrary.Resources[ResourceLibrary.ResourceType.Wood], NumResources = 1 }; Dictionary <ResourceLibrary.ResourceType, ResourceAmount> commonRoomResources = new Dictionary <ResourceLibrary.ResourceType, ResourceAmount>(); commonRoomResources[ResourceLibrary.ResourceType.Wood] = woodRequired; ResourceAmount stoneRquired = new ResourceAmount { ResourceType = ResourceLibrary.Resources[ResourceLibrary.ResourceType.Stone], NumResources = 1 }; commonRoomResources[ResourceLibrary.ResourceType.Stone] = stoneRquired; List <RoomTemplate> commonRoomTemplates = new List <RoomTemplate>(); RoomTile[,] tableTemps = { { RoomTile.None, RoomTile.Open, RoomTile.None }, { RoomTile.Open, RoomTile.Table, RoomTile.Open }, { RoomTile.None, RoomTile.Open, RoomTile.None } }; RoomTile[,] tableAcc = { { RoomTile.None, RoomTile.Chair, RoomTile.None }, { RoomTile.Chair, RoomTile.None, RoomTile.Chair }, { RoomTile.None, RoomTile.Chair, RoomTile.None } }; RoomTemplate table = new RoomTemplate(PlacementType.All, tableTemps, tableAcc); commonRoomTemplates.Add(lamp); commonRoomTemplates.Add(table); Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return(new RoomData(CommonRoomName, 1, "CobblestoneFloor", commonRoomResources, commonRoomTemplates, new ImageFrame(roomIcons, 16, 2, 0)) { Description = "Dwarves come here to socialize and drink", CanBuildAboveGround = false }); }
public static RoomData InitializeData() { RoomTile[,] lampTemplate = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Lamp } }; RoomTile[,] lampAccessories = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTemplate lamp = new RoomTemplate(PlacementType.All, lampTemplate, lampAccessories); Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> > roomResources = new Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> >() { { Resource.ResourceTags.Wood, new Quantitiy <Resource.ResourceTags>(Resource.ResourceTags.Wood) }, { Resource.ResourceTags.Stone, new Quantitiy <Resource.ResourceTags>(Resource.ResourceTags.Stone) }, }; List <RoomTemplate> commonRoomTemplates = new List <RoomTemplate>(); RoomTile[,] tableTemps = { { RoomTile.None, RoomTile.Open, RoomTile.None }, { RoomTile.Open, RoomTile.Table, RoomTile.Open }, { RoomTile.None, RoomTile.Open, RoomTile.None } }; RoomTile[,] tableAcc = { { RoomTile.None, RoomTile.Chair, RoomTile.None }, { RoomTile.Chair, RoomTile.None, RoomTile.Chair }, { RoomTile.None, RoomTile.Chair, RoomTile.None } }; RoomTemplate table = new RoomTemplate(PlacementType.All, tableTemps, tableAcc); commonRoomTemplates.Add(lamp); commonRoomTemplates.Add(table); Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return(new RoomData(CommonRoomName, 1, "CobblestoneFloor", roomResources, commonRoomTemplates, new ImageFrame(roomIcons, 16, 2, 0)) { Description = "Dwarves come here to socialize and drink", CanBuildAboveGround = false }); }
public static RoomData InitializeData() { RoomTile[,] lampTemplate = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Lamp } }; RoomTile[,] lampAccessories = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTemplate lamp = new RoomTemplate(PlacementType.All, lampTemplate, lampAccessories); Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> > roomResources = new Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> >() { { Resource.ResourceTags.Wood, new Quantitiy <Resource.ResourceTags>(Resource.ResourceTags.Wood) }, { Resource.ResourceTags.Stone, new Quantitiy <Resource.ResourceTags>(Resource.ResourceTags.Stone) }, }; List <RoomTemplate> commonRoomTemplates = new List <RoomTemplate>(); RoomTile[,] tableTemps = { { RoomTile.None, RoomTile.Open, RoomTile.None }, { RoomTile.Open, RoomTile.Table, RoomTile.Open }, { RoomTile.None, RoomTile.Open, RoomTile.None } }; RoomTile[,] tableAcc = { { RoomTile.None, RoomTile.Chair, RoomTile.None }, { RoomTile.Chair, RoomTile.None, RoomTile.Chair }, { RoomTile.None, RoomTile.Chair, RoomTile.None } }; RoomTemplate table = new RoomTemplate(PlacementType.All, tableTemps, tableAcc); commonRoomTemplates.Add(lamp); commonRoomTemplates.Add(table); return(new RoomData(CommonRoomName, 1, "Cobble", roomResources, commonRoomTemplates, new Gum.TileReference("rooms", 2)) { Description = "Dwarves come here to socialize and drink", CanBuildAboveGround = false }); }
public static RoomData InitializeData() { Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> > roomResources = new Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> >() { { Resource.ResourceTags.Wood, new Quantitiy <Resource.ResourceTags>(Resource.ResourceTags.Wood) }, }; List <RoomTemplate> bedroomTemplates = new List <RoomTemplate>(); RoomTile[,] bedTemplate = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Pillow, RoomTile.Bed }, { RoomTile.None, RoomTile.Open, RoomTile.None } }; RoomTile[,] bedAccessories = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.Chair, RoomTile.None } }; RoomTemplate bed = new RoomTemplate(PlacementType.All, bedTemplate, bedAccessories); RoomTile[,] lampTemplate = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Lamp } }; RoomTile[,] lampAccessories = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTemplate lamp = new RoomTemplate(PlacementType.All, lampTemplate, lampAccessories); bedroomTemplates.Add(lamp); bedroomTemplates.Add(bed); return(new RoomData(BedRoomName, 0, "Brown Tile", roomResources, bedroomTemplates, new Gum.TileReference("rooms", 6)) { Description = "Dwarves relax and rest here", CanBuildAboveGround = false, MinimumSideLength = 4, MinimumSideWidth = 3 }); }
public static RoomData InitializeData() { Dictionary <ResourceLibrary.ResourceType, ResourceAmount> roomResources = new Dictionary <ResourceLibrary.ResourceType, ResourceAmount>() { { ResourceLibrary.ResourceType.Iron, new ResourceAmount(ResourceLibrary.ResourceType.Iron) }, { ResourceLibrary.ResourceType.Coal, new ResourceAmount(ResourceLibrary.ResourceType.Coal) }, }; List <RoomTemplate> workshopTemplates = new List <RoomTemplate>(); RoomTile[,] anvilTemp = { { RoomTile.Open, RoomTile.Open, RoomTile.Open }, { RoomTile.Open, RoomTile.Forge, RoomTile.Open }, { RoomTile.Open, RoomTile.Open, RoomTile.Open } }; RoomTile[,] anvilAcc = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.Anvil, RoomTile.None } }; RoomTemplate anvil = new RoomTemplate(PlacementType.All, anvilTemp, anvilAcc); workshopTemplates.Add(anvil); Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return(new RoomData(WorkshopName, 2, "CobblestoneFloor", roomResources, workshopTemplates, new ImageFrame(roomIcons, 16, 1, 1)) { Description = "Craftsdwarves build mechanisms here", CanBuildAboveGround = false }); }
public static void GenerateRoomComponentsTemplate(Room room, ComponentManager componentManager, Microsoft.Xna.Framework.Content.ContentManager content, GraphicsDevice graphics) { RoomTile[,] currentTiles = RoomTemplate.CreateFromRoom(room, room.Chunks); float[,] rotations = new float[currentTiles.GetLength(0), currentTiles.GetLength(1)]; foreach (RoomTemplate template in room.RoomData.Templates) { for (int r = -2; r < currentTiles.GetLength(0) + 1; r++) { for (int c = -2; c < currentTiles.GetLength(1) + 1; c++) { for (int rotation = 0; rotation < 5; rotation++) { if (MathFunctions.RandEvent(template.Probability)) { template.PlaceTemplate(ref currentTiles, ref rotations, r, c); template.RotateClockwise(1); } } } } } BoundingBox box = room.GetBoundingBox(); int thingsMade = 0; for (int r = 0; r < currentTiles.GetLength(0); r++) { for (int c = 0; c < currentTiles.GetLength(1); c++) { RoomTile tile = currentTiles[r, c]; Body createdComponent = null; Vector3 noise = VertexNoise.GetNoiseVectorFromRepeatingTexture(box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1)); switch (tile) { case RoomTile.Barrel: createdComponent = EntityFactory.CreateEntity <Body>("Barrel", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Wheat: createdComponent = EntityFactory.CreateEntity <Body>("Wheat", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Mushroom: createdComponent = EntityFactory.CreateEntity <Body>("Mushroom", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Table: createdComponent = EntityFactory.CreateEntity <Body>("Table", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Stove: createdComponent = EntityFactory.CreateEntity <Body>("Stove", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.KitchenTable: createdComponent = EntityFactory.CreateEntity <Body>("Kitchen Table", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Lamp: createdComponent = EntityFactory.CreateEntity <Body>("Lamp", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Flag: createdComponent = EntityFactory.CreateEntity <Body>("Flag", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Chair: createdComponent = EntityFactory.CreateEntity <Body>("Chair", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Books: createdComponent = EntityFactory.CreateEntity <Body>(MathFunctions.RandEvent(0.5f) ? "Books" : "Potions", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Anvil: createdComponent = EntityFactory.CreateEntity <Body>("Anvil", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Forge: createdComponent = EntityFactory.CreateEntity <Body>("Forge", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Target: createdComponent = EntityFactory.CreateEntity <Body>("Target", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Strawman: createdComponent = EntityFactory.CreateEntity <Body>("Strawman", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.BookShelf: createdComponent = EntityFactory.CreateEntity <Body>("Bookshelf", box.Min + new Vector3(r - 1 + 0.5f, 1.5f, c - 1 + 0.5f) + noise); thingsMade++; break; case RoomTile.Pillow: for (int dx = -1; dx < 2; dx++) { for (int dy = -1; dy < 2; dy++) { if (Math.Abs(dx) + Math.Abs(dy) != 1 || r + dx < 0 || r + dx >= currentTiles.GetLength(0) || c + dy < 0 || c + dy >= currentTiles.GetLength(1)) { continue; } if (currentTiles[r + dx, c + dy] != RoomTile.Bed) { continue; } createdComponent = EntityFactory.CreateEntity <Body>("Bed", box.Min + new Vector3(r - 1 + 0.5f, 1.5f, c - 1 + 0.5f) + noise); break; } } thingsMade++; break; default: break; } if (createdComponent != null) { createdComponent.LocalTransform = Matrix.CreateRotationY(-(rotations[r, c] + (float)Math.PI * 0.5f)) * createdComponent.LocalTransform; Vector3 endPos = createdComponent.LocalTransform.Translation; Matrix offsetTransform = createdComponent.LocalTransform; offsetTransform.Translation += new Vector3(0, -1, 0); createdComponent.LocalTransform = offsetTransform; createdComponent.AnimationQueue.Add(new EaseMotion(0.8f, offsetTransform, endPos)); room.AddBody(createdComponent); PlayState.ParticleManager.Trigger("puff", endPos + new Vector3(0.5f, 0.5f, 0.5f), Color.White, 10); } } } }
public static RoomData InitializeData() { Dictionary<ResourceLibrary.ResourceType, ResourceAmount> roomResources = new Dictionary <ResourceLibrary.ResourceType, ResourceAmount>() { {ResourceLibrary.ResourceType.Stone, new ResourceAmount(ResourceLibrary.ResourceType.Stone)}, {ResourceLibrary.ResourceType.Mana, new ResourceAmount(ResourceLibrary.ResourceType.Mana)}, }; List<RoomTemplate> libraryTemplates = new List<RoomTemplate>(); RoomTile[,] lampTemplate = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Lamp } }; RoomTile[,] lampAccessories = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTile[,] bookshlf = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.None, RoomTile.BookShelf } }; RoomTile[,] bookshlfAcc = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTemplate lamp = new RoomTemplate(PlacementType.All, lampTemplate, lampAccessories); RoomTile[,] bookTemp = { { RoomTile.None, RoomTile.Open, RoomTile.None }, { RoomTile.Open, RoomTile.BookTable, RoomTile.Open }, { RoomTile.None, RoomTile.Open, RoomTile.None } }; RoomTile[,] bookAcc = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None } }; RoomTemplate book = new RoomTemplate(PlacementType.Random, bookTemp, bookAcc); libraryTemplates.Add(new RoomTemplate(PlacementType.Random, bookshlf, bookshlfAcc) { Probability = 0.15f}); libraryTemplates.Add(lamp); libraryTemplates.Add(book); Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return new RoomData(LibraryRoomName, 4, "BlueTileFloor", roomResources, libraryTemplates, new ImageFrame(roomIcons, 16, 0, 1)) { Description = "Wizards do magical research here. Also holds mana crystals to charge magic spells.", CanBuildAboveGround = false }; }
public static RoomData InitializeData() { Dictionary<ResourceLibrary.ResourceType, ResourceAmount> bedroomResources = new Dictionary<ResourceLibrary.ResourceType, ResourceAmount>(); ResourceAmount woodRequired = new ResourceAmount { ResourceType = ResourceLibrary.Resources[ResourceLibrary.ResourceType.Wood], NumResources = 1 }; bedroomResources[ResourceLibrary.ResourceType.Wood] = woodRequired; List<RoomTemplate> bedroomTemplates = new List<RoomTemplate>(); RoomTile[,] bedTemplate = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Pillow, RoomTile.Bed }, { RoomTile.None, RoomTile.Open, RoomTile.None } }; RoomTile[,] bedAccessories = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.Chair, RoomTile.None } }; RoomTemplate bed = new RoomTemplate(PlacementType.All, bedTemplate, bedAccessories); RoomTile[,] lampTemplate = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Lamp } }; RoomTile[,] lampAccessories = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTemplate lamp = new RoomTemplate(PlacementType.All, lampTemplate, lampAccessories); bedroomTemplates.Add(lamp); bedroomTemplates.Add(bed); Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return new RoomData(BedRoomName, 0, "BrownTileFloor", bedroomResources, bedroomTemplates, new ImageFrame(roomIcons, 16, 2, 1)) { Description = "Dwarves relax and rest here", CanBuildAboveGround = false }; }
public static RoomData InitializeData() { Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> > roomResources = new Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> >() { { Resource.ResourceTags.Stone, new Quantitiy <Resource.ResourceTags>(Resource.ResourceTags.Stone) }, { Resource.ResourceTags.Fuel, new Quantitiy <Resource.ResourceTags>(Resource.ResourceTags.Fuel) }, }; List <RoomTemplate> workshopTemplates = new List <RoomTemplate>(); RoomTile[,] template = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.Wall | RoomTile.Edge, RoomTile.KitchenTable, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None } }; RoomTile[,] accessories = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.Barrel, RoomTile.None } }; RoomTile[,] stovetemp = { { RoomTile.Open, RoomTile.Open, RoomTile.Open }, { RoomTile.Open, RoomTile.Stove, RoomTile.Open }, { RoomTile.Open, RoomTile.Open, RoomTile.Open } }; RoomTile[,] stoveacc = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None } }; RoomTemplate barrel = new RoomTemplate(PlacementType.All, template, accessories) { Probability = 0.2f }; RoomTemplate stove = new RoomTemplate(PlacementType.All, stovetemp, stoveacc) { Probability = 1.0f }; workshopTemplates.Add(stove); workshopTemplates.Add(barrel); Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return(new RoomData(KitchenName, 2, "BlueTileFloor", roomResources, workshopTemplates, new ImageFrame(roomIcons, 16, 3, 2)) { Description = "Cooking is done here", CanBuildAboveGround = false }); }
public static List <Body> GenerateRoomComponentsTemplate( RoomData roomData, List <VoxelHandle> voxels, ComponentManager componentManager, Microsoft.Xna.Framework.Content.ContentManager content, GraphicsDevice graphics) { List <Body> components = new List <Body>(); RoomTile[,] currentTiles = RoomTemplate.CreateFromRoom( voxels, componentManager.World.ChunkManager); float[,] rotations = new float[currentTiles.GetLength(0), currentTiles.GetLength(1)]; foreach (RoomTemplate myTemp in roomData.Templates) { RoomTemplate template = new RoomTemplate(myTemp) { Rotation = 0 }; for (int r = -2; r < currentTiles.GetLength(0) + 1; r++) { for (int c = -2; c < currentTiles.GetLength(1) + 1; c++) { for (int rotation = 0; rotation < 5; rotation++) { template.PlaceTemplate(ref currentTiles, ref rotations, r, c); template.RotateClockwise(1); } } } } var box = VoxelHelpers.GetVoxelBoundingBox(voxels); int thingsMade = 0; for (int r = 0; r < currentTiles.GetLength(0); r++) { for (int c = 0; c < currentTiles.GetLength(1); c++) { RoomTile tile = currentTiles[r, c]; Body createdComponent = null; Vector3 noise = VertexNoise.GetNoiseVectorFromRepeatingTexture(box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1)); switch (tile) { case RoomTile.Barrel: createdComponent = EntityFactory.CreateEntity <Body>("Barrel", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Wheat: createdComponent = EntityFactory.CreateEntity <Body>("Wheat", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Mushroom: createdComponent = EntityFactory.CreateEntity <Body>("Mushroom", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Table: createdComponent = EntityFactory.CreateEntity <Body>("Table", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Stove: createdComponent = EntityFactory.CreateEntity <Body>("Stove", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.KitchenTable: createdComponent = EntityFactory.CreateEntity <Body>("Kitchen Table", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Lamp: createdComponent = EntityFactory.CreateEntity <Body>("Lamp", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Flag: createdComponent = EntityFactory.CreateEntity <Body>("Flag", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Chair: createdComponent = EntityFactory.CreateEntity <Body>("Chair", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Books: createdComponent = EntityFactory.CreateEntity <Body>(MathFunctions.RandEvent(0.5f) ? "Books" : "Potions", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Anvil: createdComponent = EntityFactory.CreateEntity <Body>("Anvil", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Forge: createdComponent = EntityFactory.CreateEntity <Body>("Forge", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Target: createdComponent = EntityFactory.CreateEntity <Body>("Target", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.Strawman: createdComponent = EntityFactory.CreateEntity <Body>("Strawman", box.Min + new Vector3(r + 0.5f - 1, 1.5f, c + 0.5f - 1) + noise); thingsMade++; break; case RoomTile.BookShelf: createdComponent = EntityFactory.CreateEntity <Body>("Bookshelf", box.Min + new Vector3(r - 1 + 0.5f, 1.5f, c - 1 + 0.5f) + noise); thingsMade++; break; case RoomTile.Pillow: for (int dx = -1; dx < 2; dx++) { for (int dy = -1; dy < 2; dy++) { if (Math.Abs(dx) + Math.Abs(dy) != 1 || r + dx < 0 || r + dx >= currentTiles.GetLength(0) || c + dy < 0 || c + dy >= currentTiles.GetLength(1)) { continue; } if (currentTiles[r + dx, c + dy] != RoomTile.Bed) { continue; } createdComponent = EntityFactory.CreateEntity <Body>("Bed", box.Min + new Vector3(r - 1 + 0.5f, 1.5f, c - 1 + 0.5f) + noise); break; } } thingsMade++; break; default: break; } if (createdComponent == null) { continue; } createdComponent.Tags.Add("Moveable"); createdComponent.LocalTransform = Matrix.CreateRotationY(-(rotations[r, c] + (float)Math.PI * 0.5f)) * createdComponent.LocalTransform; components.Add(createdComponent); } } return(components); }
public static RoomData InitializeData() { List <RoomTemplate> trainingTemplates = new List <RoomTemplate>(); RoomTile[,] targetTemp = { { RoomTile.Open, RoomTile.Open, RoomTile.Open }, { RoomTile.Open, RoomTile.Strawman, RoomTile.Open }, { RoomTile.Open, RoomTile.Open, RoomTile.Open } }; RoomTile[,] strawAcc = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.Target }, { RoomTile.None, RoomTile.None, RoomTile.None } }; RoomTemplate straw = new RoomTemplate(PlacementType.All, targetTemp, strawAcc); RoomTile[,] lampTemplate = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Lamp } }; RoomTile[,] lampAccessories = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTemplate lamp = new RoomTemplate(PlacementType.All, lampTemplate, lampAccessories); trainingTemplates.Add(lamp); trainingTemplates.Add(straw); Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> > roomResources = new Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> >() { { Resource.ResourceTags.Stone, new Quantitiy <Resource.ResourceTags>(Resource.ResourceTags.Stone) }, }; Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return(new RoomData(TrainingRoomName, 3, "CobblestoneFloor", roomResources, trainingTemplates, new ImageFrame(roomIcons, 16, 3, 0)) { Description = "Military dwarves train here" }); }
public static RoomData InitializeData() { List<RoomTemplate> trainingTemplates = new List<RoomTemplate>(); RoomTile[,] targetTemp = { { RoomTile.Open, RoomTile.Open, RoomTile.Open }, { RoomTile.Open, RoomTile.Strawman, RoomTile.Open }, { RoomTile.Open, RoomTile.Open, RoomTile.Open } }; RoomTile[,] strawAcc = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.Target }, { RoomTile.None, RoomTile.None, RoomTile.None } }; RoomTemplate straw = new RoomTemplate(PlacementType.All, targetTemp, strawAcc); RoomTile[,] lampTemplate = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Lamp } }; RoomTile[,] lampAccessories = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTemplate lamp = new RoomTemplate(PlacementType.All, lampTemplate, lampAccessories); trainingTemplates.Add(lamp); trainingTemplates.Add(straw); Dictionary<ResourceLibrary.ResourceType, ResourceAmount> roomResources = new Dictionary<ResourceLibrary.ResourceType, ResourceAmount>(); ResourceAmount woodRequired = new ResourceAmount { ResourceType = ResourceLibrary.Resources[ResourceLibrary.ResourceType.Stone], NumResources = 1 }; roomResources[ResourceLibrary.ResourceType.Stone] = woodRequired; Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return new RoomData(TrainingRoomName, 3, "CobblestoneFloor", roomResources, trainingTemplates, new ImageFrame(roomIcons, 16, 3, 0)) { Description = "Military dwarves train here" }; }
public static RoomData InitializeData() { Dictionary<ResourceLibrary.ResourceType, ResourceAmount> roomResources = new Dictionary <ResourceLibrary.ResourceType, ResourceAmount>() { {ResourceLibrary.ResourceType.Iron, new ResourceAmount(ResourceLibrary.ResourceType.Iron)}, {ResourceLibrary.ResourceType.Coal, new ResourceAmount(ResourceLibrary.ResourceType.Coal)}, }; List<RoomTemplate> workshopTemplates = new List<RoomTemplate>(); RoomTile[,] anvilTemp = { { RoomTile.Open, RoomTile.Open, RoomTile.Open }, { RoomTile.Open, RoomTile.Forge, RoomTile.Open }, { RoomTile.Open, RoomTile.Open, RoomTile.Open } }; RoomTile[,] anvilAcc = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.Anvil, RoomTile.None } }; RoomTemplate anvil = new RoomTemplate(PlacementType.All, anvilTemp, anvilAcc); workshopTemplates.Add(anvil); Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return new RoomData(WorkshopName, 2, "CobblestoneFloor", roomResources, workshopTemplates, new ImageFrame(roomIcons, 16, 1, 1)) { Description = "Craftsdwarves build mechanisms here", CanBuildAboveGround = false }; }
public static RoomData InitializeData() { Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> > roomResources = new Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> >() { { Resource.ResourceTags.Stone, new Quantitiy <Resource.ResourceTags>(Resource.ResourceTags.Stone, 2) }, { Resource.ResourceTags.Fuel, new Quantitiy <Resource.ResourceTags>(Resource.ResourceTags.Fuel, 1) }, }; List <RoomTemplate> workshopTemplates = new List <RoomTemplate>(); RoomTile[,] template = { { RoomTile.None, RoomTile.Open, RoomTile.None }, { RoomTile.Wall | RoomTile.Edge, RoomTile.KitchenTable, RoomTile.None }, { RoomTile.None, RoomTile.Open, RoomTile.None } }; RoomTile[,] accessories = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.Barrel, RoomTile.None } }; RoomTile[,] stovetemp = { { RoomTile.Open, RoomTile.Open, RoomTile.Open }, { RoomTile.Open, RoomTile.Stove, RoomTile.Open }, { RoomTile.Open, RoomTile.Open, RoomTile.Open } }; RoomTile[,] stoveacc = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None } }; RoomTemplate barrel = new RoomTemplate(PlacementType.All, template, accessories) { Probability = 0.2f }; RoomTemplate stove = new RoomTemplate(PlacementType.All, stovetemp, stoveacc) { Probability = 1.0f }; workshopTemplates.Add(stove); workshopTemplates.Add(barrel); return(new RoomData(KitchenName, 2, "Blue Tile", roomResources, workshopTemplates, new Gui.TileReference("rooms", 11)) { Description = "Cooking is done here", CanBuildAboveGround = false }); }
public static RoomData InitializeData() { Dictionary<ResourceLibrary.ResourceType, ResourceAmount> balloonPortResources = new Dictionary<ResourceLibrary.ResourceType, ResourceAmount>(); ResourceAmount balloonStoneRequired = new ResourceAmount { ResourceType = ResourceLibrary.Resources[ResourceLibrary.ResourceType.Wood], NumResources = 1 }; balloonPortResources[ResourceLibrary.ResourceType.Wood] = balloonStoneRequired; RoomTile[,] flagTemplate = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Flag } }; RoomTile[,] flagAccesories = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTemplate flag = new RoomTemplate(PlacementType.All, flagTemplate, flagAccesories); List<RoomTemplate> balloonTemplates = new List<RoomTemplate> { flag }; Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return new RoomData(BalloonPortName, 0, "Stockpile", balloonPortResources, balloonTemplates, new ImageFrame(roomIcons, 16, 1, 0)) { Description = "Balloons pick up / drop off resources here.", CanBuildBelowGround = false }; }
public static RoomData InitializeData() { Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> > roomResources = new Dictionary <Resource.ResourceTags, Quantitiy <Resource.ResourceTags> >() { { Resource.ResourceTags.Magical, new Quantitiy <Resource.ResourceTags>(Resource.ResourceTags.Magical) }, { Resource.ResourceTags.Stone, new Quantitiy <Resource.ResourceTags>(Resource.ResourceTags.Stone) }, }; List <RoomTemplate> libraryTemplates = new List <RoomTemplate>(); RoomTile[,] lampTemplate = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Lamp } }; RoomTile[,] lampAccessories = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTile[,] bookshlf = { { RoomTile.Open, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Open, RoomTile.BookShelf } }; RoomTile[,] bookshlfAcc = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTemplate lamp = new RoomTemplate(PlacementType.All, lampTemplate, lampAccessories); RoomTile[,] bookTemp = { { RoomTile.None, RoomTile.Open | RoomTile.Edge | RoomTile.BookShelf, RoomTile.None }, { RoomTile.Open | RoomTile.Edge | RoomTile.BookShelf, RoomTile.Books, RoomTile.Open | RoomTile.Edge | RoomTile.BookShelf, }, { RoomTile.None, RoomTile.Open | RoomTile.Edge | RoomTile.BookShelf, RoomTile.None } }; RoomTile[,] bookAcc = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None } }; RoomTemplate book = new RoomTemplate(PlacementType.Random, bookTemp, bookAcc) { Probability = 0.5f }; libraryTemplates.Add(new RoomTemplate(PlacementType.Random, bookshlf, bookshlfAcc) { Probability = 0.15f }); libraryTemplates.Add(lamp); libraryTemplates.Add(book); Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return(new RoomData(LibraryRoomName, 4, "Blue Tile", roomResources, libraryTemplates, new Gum.TileReference("rooms", 4)) { Description = "Wizards do magical research here. Also holds mana crystals to charge magic spells.", CanBuildAboveGround = false }); }
public static RoomData InitializeData() { RoomTile[,] lampTemplate = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Lamp } }; RoomTile[,] lampAccessories = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTemplate lamp = new RoomTemplate(PlacementType.All, lampTemplate, lampAccessories); ResourceAmount woodRequired = new ResourceAmount { ResourceType = ResourceLibrary.Resources[ResourceLibrary.ResourceType.Wood], NumResources = 1 }; Dictionary<ResourceLibrary.ResourceType, ResourceAmount> commonRoomResources = new Dictionary<ResourceLibrary.ResourceType, ResourceAmount>(); commonRoomResources[ResourceLibrary.ResourceType.Wood] = woodRequired; ResourceAmount stoneRquired = new ResourceAmount { ResourceType = ResourceLibrary.Resources[ResourceLibrary.ResourceType.Stone], NumResources = 1 }; commonRoomResources[ResourceLibrary.ResourceType.Stone] = stoneRquired; List<RoomTemplate> commonRoomTemplates = new List<RoomTemplate>(); RoomTile[,] tableTemps = { { RoomTile.None, RoomTile.Open, RoomTile.None }, { RoomTile.Open, RoomTile.Table, RoomTile.Open }, { RoomTile.None, RoomTile.Open, RoomTile.None } }; RoomTile[,] tableAcc = { { RoomTile.None, RoomTile.Chair, RoomTile.None }, { RoomTile.Chair, RoomTile.None, RoomTile.Chair }, { RoomTile.None, RoomTile.Chair, RoomTile.None } }; RoomTemplate table = new RoomTemplate(PlacementType.All, tableTemps, tableAcc); commonRoomTemplates.Add(lamp); commonRoomTemplates.Add(table); Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return new RoomData(CommonRoomName, 1, "CobblestoneFloor", commonRoomResources, commonRoomTemplates, new ImageFrame(roomIcons, 16, 2, 0)) { Description = "Dwarves come here to socialize and drink", CanBuildAboveGround = false }; }
public static RoomData InitializeData() { Dictionary <ResourceLibrary.ResourceType, ResourceAmount> roomResources = new Dictionary <ResourceLibrary.ResourceType, ResourceAmount>() { { ResourceLibrary.ResourceType.Stone, new ResourceAmount(ResourceLibrary.ResourceType.Stone) }, { ResourceLibrary.ResourceType.Mana, new ResourceAmount(ResourceLibrary.ResourceType.Mana) }, }; List <RoomTemplate> libraryTemplates = new List <RoomTemplate>(); RoomTile[,] lampTemplate = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.Wall | RoomTile.Edge, RoomTile.Lamp } }; RoomTile[,] lampAccessories = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTile[,] bookshlf = { { RoomTile.None, RoomTile.Wall | RoomTile.Edge }, { RoomTile.None, RoomTile.BookShelf } }; RoomTile[,] bookshlfAcc = { { RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None } }; RoomTemplate lamp = new RoomTemplate(PlacementType.All, lampTemplate, lampAccessories); RoomTile[,] bookTemp = { { RoomTile.None, RoomTile.Open, RoomTile.None }, { RoomTile.Open, RoomTile.BookTable, RoomTile.Open }, { RoomTile.None, RoomTile.Open, RoomTile.None } }; RoomTile[,] bookAcc = { { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None }, { RoomTile.None, RoomTile.None, RoomTile.None } }; RoomTemplate book = new RoomTemplate(PlacementType.Random, bookTemp, bookAcc); libraryTemplates.Add(new RoomTemplate(PlacementType.Random, bookshlf, bookshlfAcc) { Probability = 0.15f }); libraryTemplates.Add(lamp); libraryTemplates.Add(book); Texture2D roomIcons = TextureManager.GetTexture(ContentPaths.GUI.room_icons); return(new RoomData(LibraryRoomName, 4, "BlueTileFloor", roomResources, libraryTemplates, new ImageFrame(roomIcons, 16, 0, 1)) { Description = "Wizards do magical research here. Also holds mana crystals to charge magic spells.", CanBuildAboveGround = false }); }