001// Copyright 2002 by Basil Vandegriend. All rights reserved.
002
003package com.basilv.examples.enums;
004
005/**
006 * Example of an enum with abstract methods and properties.
007 */
008public enum Terrain {
009
010  NONE(""),
011
012  WALL("Wall") {
013    @Override public boolean preventsMovement() {
014      return true;
015    }
016
017    @Override public boolean blocksLineOfSight() {
018      return true;
019    }
020  },
021
022  PIT("Pit") {
023    @Override public boolean preventsMovement() {
024      return true;
025    }
026  },
027
028  GLASS_WALL("Glass Wall") {
029    @Override public boolean preventsMovement() {
030      return WALL.preventsMovement();
031    }
032  },
033  
034  FOG("Fog") {
035    @Override public boolean blocksLineOfSight() {
036      return true;
037    }
038  };
039
040  private String displayName;
041
042  private Terrain(String displayName) {
043    this.displayName = displayName;
044  }
045
046  public String getDisplayName() {
047    return displayName;
048  }
049
050  public boolean preventsMovement() {
051    return false;
052  }
053
054  public boolean blocksLineOfSight() {
055    return false;
056  }
057
058}