Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Random;
- public class LayoutPopulator {
- public enum TileTypes{
- Ground('#'), Water('~'), House('H'), Boat('U');
- public final char icon;
- TileTypes(char icon){
- this.icon = icon;
- }
- }
- private Layout layout;
- private Random rand = new Random();
- LayoutPopulator(Layout layout){
- this.layout = layout;
- pWater(layout);
- }
- private void pWater(Layout layout){
- for(int i = 0; i < layout.getLayout().length; i++){
- int randInt = rand.nextInt(101);
- if(randInt == 0){
- if(!(i - 1 < 0 || i % layout.getX() == 0 || (i + 1) % layout.getX() == 0 || i + layout.getX() > layout.getLayout().length)){ //Prevents lake's source tile from spawning on an edge
- layout.getLayout()[i] = TileTypes.Water.icon;
- if(i + layout.getX() < layout.getLayout().length + 1){
- layout.getLayout()[i + layout.getX()] = TileTypes.Water.icon;
- layout.getLayout()[i + layout.getX() + 1] = TileTypes.Water.icon;
- layout.getLayout()[i + layout.getX() - 1] = TileTypes.Water.icon;
- if((i + layout.getX()) + layout.getX() < layout.getLayout().length + 1){
- layout.getLayout()[(i + layout.getX()) + layout.getX()] = TileTypes.Water.icon;
- }
- randInt = rand.nextInt(101);
- if(randInt < 40){
- layout.getLayout()[i - 1] = TileTypes.Water.icon;
- }
- if(i - layout.getX() > 0){
- layout.getLayout()[i - layout.getX()] = TileTypes.Water.icon;
- layout.getLayout()[i - layout.getX() + 1] = TileTypes.Water.icon;
- layout.getLayout()[i - layout.getX() - 1] = TileTypes.Water.icon;
- if((i - layout.getX()) - layout.getX() > 0){
- layout.getLayout()[(i - layout.getX()) - layout.getX()] = TileTypes.Water.icon;
- }
- }
- }
- }
- }
- }
- layout.stringRep(layout.getLayout());
- pGround(layout);
- }
- private void pGround(Layout layout){
- for(int i = 0; i < layout.getLayout().length; i++){
- if(layout.getLayout()[i] != TileTypes.Water.icon){
- layout.getLayout()[i] = TileTypes.Ground.icon;
- }
- }
- layout.stringRep(layout.getLayout());
- pHouse(layout);
- }
- private void pHouse(Layout layout){
- for(int i = 0; i < layout.getLayout().length; i++){
- int randInt = rand.nextInt(101);
- if(layout.getLayout()[i] == TileTypes.Ground.icon && randInt <= 2){
- layout.getLayout()[i] = TileTypes.House.icon;
- }
- }
- layout.stringRep(layout.getLayout());
- pBoat(layout);
- }
- private void pBoat(Layout layout){
- for(int i = 0; i < layout.getLayout().length; i++){
- if(layout.getLayout()[i] == TileTypes.Water.icon){
- if(i - 1 > 0 && i % layout.getX() != 0 && i + 1 < layout.getLayout().length && (i + 1) % layout.getX() != 0){
- if(layout.getLayout()[i + 1] == TileTypes.House.icon || layout.getLayout()[i - 1] == TileTypes.House.icon){
- layout.getLayout()[i] = TileTypes.Boat.icon;
- }
- }
- if(i - layout.getX() > 0 && i + layout.getX() < layout.getLayout().length){
- if(layout.getLayout()[i - layout.getX()] == TileTypes.House.icon || layout.getLayout()[i + layout.getX()] == TileTypes.House.icon){
- layout.getLayout()[i] = TileTypes.Boat.icon;
- }
- }
- }
- }
- layout.stringRep(layout.getLayout());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement