public LocationDetailsComponent(Settlement settlement, int x, int y) { this.settlement = settlement; this.x = x; this.y = y; this.PerformDrag(0, 0); }
/// <summary> /// Puts settlement items on a particular location pertianing to a particular settlement. /// </summary> /// <param name="capital">Whether it's the capital or not</param> /// <param name="settlement">The settlement which it represents</param> /// <param name="block">The block making up the center</param> private static SettlementItem CreateSettlement(bool capital, Settlement settlement, MapBlock block, int owner) { //Put an entire group of SettlementItems on it MapCoordinate[] settlementCoordinates = new MapCoordinate[10]; SettlementItem retItem = null; settlementCoordinates[7] = new MapCoordinate(block.Tile.Coordinate.X - 1, block.Tile.Coordinate.Y - 1, 0, MapType.GLOBAL); settlementCoordinates[8] = new MapCoordinate(block.Tile.Coordinate.X, block.Tile.Coordinate.Y - 1, 0, MapType.GLOBAL); settlementCoordinates[9] = new MapCoordinate(block.Tile.Coordinate.X + 1, block.Tile.Coordinate.Y - 1, 0, MapType.GLOBAL); settlementCoordinates[4] = new MapCoordinate(block.Tile.Coordinate.X - 1, block.Tile.Coordinate.Y, 0, MapType.GLOBAL); settlementCoordinates[5] = new MapCoordinate(block.Tile.Coordinate.X, block.Tile.Coordinate.Y, 0, MapType.GLOBAL); settlementCoordinates[6] = new MapCoordinate(block.Tile.Coordinate.X + 1, block.Tile.Coordinate.Y, 0, MapType.GLOBAL); settlementCoordinates[1] = new MapCoordinate(block.Tile.Coordinate.X - 1, block.Tile.Coordinate.Y + 1, 0, MapType.GLOBAL); settlementCoordinates[2] = new MapCoordinate(block.Tile.Coordinate.X, block.Tile.Coordinate.Y + 1, 0, MapType.GLOBAL); settlementCoordinates[3] = new MapCoordinate(block.Tile.Coordinate.X + 1, block.Tile.Coordinate.Y + 1, 0, MapType.GLOBAL); //Block the radius around it from colonising MapBlock[] regionalBlocks = GetBlocksAroundPoint(block.Tile.Coordinate, HUMAN_COLONY_BLOCKING_RADIUS); foreach (MapBlock rblock in regionalBlocks) { (rblock.Tile as GlobalTile).IsBlockedForColonisation = true; } //Claim the land around it MapBlock[] claimedBlocks = GetBlocksAroundPoint(block.Tile.Coordinate, HUMAN_COLONY_CLAIMING_RADIUS); foreach (MapBlock rblock in claimedBlocks) { //This is a disputed region. For now let's not allow creep. //Later this might be cause for war if (!(rblock.Tile as GlobalTile).Owner.HasValue) { (rblock.Tile as GlobalTile).Owner = owner; } } for (int corner = 1; corner < 10; corner++) { var cornerBlock = GameState.GlobalMap.GetBlockAtCoordinate(settlementCoordinates[corner]); //Cut any forests down switch ((cornerBlock.Tile as GlobalTile).Biome) { case GlobalBiome.DENSE_FOREST: (cornerBlock.Tile as GlobalTile).Biome = GlobalBiome.GRASSLAND; break; case GlobalBiome.WOODLAND: (cornerBlock.Tile as GlobalTile).Biome = GlobalBiome.GRASSLAND; break; case GlobalBiome.POLAR_FOREST: (cornerBlock.Tile as GlobalTile).Biome = GlobalBiome.POLAR_DESERT; break; } var settlementItem = new SettlementItem() { Coordinate = settlementCoordinates[corner], IsCapital = capital, MayContainItems = true, SettlementCorner = corner, SettlementSize = settlement.SettlementSize, Description = (capital ? "the capital of " + settlement.Name : "the settlement of " + settlement.Name) + " owned by " + settlement.Civilisation.Name, Name = settlement.Name, Settlement = settlement, OwnerID = owner }; GameState.GlobalMap.GetBlockAtCoordinate(settlementCoordinates[corner]) .ForcePutItemOnBlock(settlementItem); if (settlementItem.SettlementCorner == 5) //center { retItem = settlementItem; } } return retItem; }