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