/* * The MIT License (MIT) * * Copyright (c) 2015 Camil Staps * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package com.camilstaps.route66; /** * OO1route66 initial class * * Enumeration class for driving directions * * @author Pieter Koopman, Camil Staps */ public enum Direction { North, East, South, West; /** * convert integer to direction * if number of directions is 2 only East and West are used, * otherwise all 4 directions are used * @param i the integer * @return the direction */ public static Direction intToDirection(int i) { if (Model.DIRECTIONS == 2) { switch (i % 2) { case 0: return East; default: return West; } } else { switch (i % 4) { case 0: return North; case 1: return East; case 2: return South; default: return West; } } } /** * Get the opposite of a direction * @param direction * @return */ public static Direction opposite(Direction direction) { switch (direction) { case North: return South; case South: return North; case East: return West; case West: return East; default: return direction; } } /** * override standard toString * @return string representation of this value */ @Override public String toString() { switch (this) { case North: return "North"; case East: return "East"; case South: return "South"; case West: return "West"; default: return "Unknown direction"; } } }