001    // Copyright 2002 by Basil Vandegriend. All rights reserved.
002    
003    package com.basilv.examples.enums;
004    
005    /**
006     * Example of an enum with abstract methods and properties.
007     */
008    public 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    }