public static void build(Region region, int x, int y, Building building) { switch (building.getBuildingType()) { case BuildingType.BANK: buildByArray(region, x, y, building, bankStruct); break; case BuildingType.INN: buildByArray(region, x, y, building, innStruct); building.setLit(false); break; case BuildingType.HOUSE: buildByArray(region, x, y, building, houseStruct); break; case BuildingType.FOOD_STORE: buildByArray(region, x, y, building, foodStoreStruct); break; case BuildingType.TOOL_STORE: buildByArray(region, x, y, building, toolStoreStruct); break; } }
public object CopyObject() { Building newBuild = new Building(); newBuild.setName(this.getName()); newBuild.setX(this.x); newBuild.setY(this.y); newBuild.setWidth(this.width); newBuild.setHeight(this.height); newBuild.setBuildingType(this.buildingType); newBuild.setDoor(this.door.x, this.door.y); newBuild.setLit(this.isLit()); newBuild.setRoofType(this.roofType); return newBuild; }
public void LoadObject(StreamReader inStream) { this.width = Int32.Parse(inStream.ReadLine()); this.height = Int32.Parse(inStream.ReadLine()); terrainField = new Terrain[getWidth(),getHeight()]; for(int x=0; x < getWidth(); x++) { for(int y=0; y < getHeight(); y++) { Terrain newTerrain = new Terrain(); newTerrain.LoadObject(inStream); terrainField[x,y] = newTerrain; } } getMonsters().Clear(); int monstersSize = Int32.Parse(inStream.ReadLine()); for(int i=0; i < monstersSize; i++) { Monster newMonster = new Monster(); newMonster.LoadObject(inStream); //do not load any monster with the player ID if(!newMonster.ID.Equals(MonsterActionManager.PLAYER_ID)) { getMonsters().Add(newMonster); } } getItems().Clear(); int itemsSize = Int32.Parse(inStream.ReadLine()); for(int i=0; i < itemsSize; i++) { Item newItem = new Item(); newItem.LoadObject(inStream); getItems().Add(newItem); } getBuildings().Clear(); int buildSize = Int32.Parse(inStream.ReadLine()); for(int i=0; i < buildSize; i++) { Building newBuild = new Building(); newBuild.LoadObject(inStream); getBuildings().Add(newBuild); } this.lightingModel = (LightingModel)Enum.Parse(typeof(LightingModel), inStream.ReadLine()); }
public void generate() { int centerX = (int)(region.getWidth() / 2); int centerY = (int)(region.getHeight() / 2); int distanceCutoff = (int)(centerX * radius); //make the town center for (int x = 0; x < region.getWidth(); x++) { for (int y = 0; y < region.getHeight(); y++) { region.setTerrain(x, y, new Terrain()); int distance = (int)(Math.Sqrt(((x - centerX) * (x - centerX)) + ((y - centerY) * (y - centerY)))); if (distance > distanceCutoff + RandomNumber.RandomInteger(wiggle)) { region.getTerrain(x, y).setCode(TerrainCode.GRASS); } else { region.getTerrain(x, y).setCode(TerrainCode.DIRT); } } } //make the path MapGenerator.makePath(region, overworldCell.nExit, overworldCell.eExit, overworldCell.sExit, overworldCell.wExit); //add trees MapGenerator.addTrees(region, treeDensity); //add grave yard MapGenerator.addGraveyard(15, 10, region.getWidth() - 19, region.getHeight() - 14, region); //add buildings Building bank = new Building(); bank.setBuildingType(BuildingType.BANK); BuildingManager.initialize(bank); bank.setPosition((region.getWidth() / 10) * 3, (int)((region.getHeight() / 10) * 2.5)); region.getBuildings().Add(bank); Building inn = new Building(); inn.setBuildingType(BuildingType.INN); BuildingManager.initialize(inn); inn.setPosition(3 + ((region.getWidth() / 10) * 5), (int)((region.getHeight() / 10) * 2.5)); region.getBuildings().Add(inn); for (int i = 0; i < 3; i++) { Building house = new Building(); if (i == 1) { house.setBuildingType(BuildingType.HOUSE); } else if (i == 0) { house.setBuildingType(BuildingType.FOOD_STORE); } else if (i == 2) { house.setBuildingType(BuildingType.TOOL_STORE); } BuildingManager.initialize(house); house.setPosition((region.getWidth() / 10) * (4 + (i * 2)), (int)((region.getHeight() / 10) * 6)); region.getBuildings().Add(house); } region.buildBuildings(); //Add a pond in the corner region.getTerrain(7, 7).getParameters().Add(TerrainParameter.HAS_SPRING, TerrainManager.SPRING_RATE + ""); for (int x = 4; x < 10; x++) { for (int y = 4; y < 10; y++) { region.getTerrain(x, y).setCode(TerrainCode.STREAM_BED); } } }
public static void buildByArray(Region region, int startX, int startY, Building building, int[,] plan) { for (int x = 0; x < BuildingManager.getWidth(building.getBuildingType()); x++) { for (int y = 0; y < BuildingManager.getHeight(building.getBuildingType()); y++) { if (x + startX < region.getWidth() && x + startX > 0 && y + startY < region.getHeight() && y + startY > 0) { switch (plan[y,x]) { case 0: region.getTerrain(startX + x, startY + y).setCode(TerrainCode.STONE_FLOOR); break; case 1: region.getTerrain(startX + x, startY + y).setCode(TerrainCode.STONE_WALL); break; case 9: region.getTerrain(startX + x, startY + y).setCode(TerrainCode.STONE_FLOOR); region.getTerrain(startX + x, startY + y).getParameters().Add(TerrainParameter.HAS_DOOR, Enum.GetName(typeof(DoorCode), DoorCode.CLOSED)); building.setDoor(startX + x, startY + y); break; case 8: region.getTerrain(startX + x, startY + y).setCode(TerrainCode.STONE_WALL); region.getTerrain(startX + x, startY + y).getParameters().Add(TerrainParameter.HAS_SIGN, building.getName()); break; case 2: region.getTerrain(startX + x, startY + y).setCode(TerrainCode.STONE_FLOOR); Monster newMon = new Monster(); switch (building.getBuildingType()) { case BuildingType.BANK: newMon.monsterCode = MonsterCode.HUMAN; newMon.role = MonsterRole.BANKER; break; case BuildingType.INN: newMon.monsterCode = MonsterCode.HUMAN; newMon.role = MonsterRole.NULL; break; case BuildingType.FOOD_STORE: newMon.monsterCode = MonsterCode.HUMAN; newMon.role = MonsterRole.CHEF; break; case BuildingType.TOOL_STORE: newMon.monsterCode = MonsterCode.HUMAN; newMon.role = MonsterRole.HANDYMAN; break; } MonsterActionManager.initialize(newMon); newMon.setPosition(startX + x, startY + y); region.getMonsters().Add(newMon); break; case 3: //Add a bed region.getTerrain(startX + x, startY + y).setCode(TerrainCode.STONE_FLOOR); region.getTerrain(startX + x, startY + y).getParameters().Add(TerrainParameter.HAS_BED, ""); break; } } } } }
public static String makeBuildingName(Building building) { switch (building.getBuildingType()) { case BuildingType.BANK: return NameMaker.makeBankName(); case BuildingType.FOOD_STORE: return NameMaker.makeFoodName(); } return EnumUtil.EnumName<BuildingType>(building.getBuildingType()); }
public static void initialize(Building building) { building.setWidth(getWidth(building.getBuildingType())); building.setHeight(getHeight(building.getBuildingType())); building.setName(BuildingManager.makeBuildingName(building)); }