001 package core;
002
003 /**
004 * An enum with a user readable message about what why someone won. Also used to
005 * output the reason to the schema.
006 */
007 public enum GameOver
008 {
009 CHECKMATE, PIECES_LOST, TIME_EXPIRED, NONE;
010
011 /**
012 * @returns a string representation of the enum (useful for the xml schema)
013 */
014 public String toString()
015 {
016 switch (this)
017 {
018 case CHECKMATE:
019 return "checkmate";
020 case PIECES_LOST:
021 return "piecesLost";
022 case TIME_EXPIRED:
023 return "timeExpired";
024 default:
025 return "none";
026 }
027 }
028
029 /**
030 * @returns a human readable string representation of the enum (useful for
031 * messages to the user)
032 */
033 public String humanReadableString()
034 {
035 switch (this)
036 {
037 case CHECKMATE:
038 return "by checkmating the opponent.";
039 case PIECES_LOST:
040 return "by losing all of his/her/its pieces.";
041 case TIME_EXPIRED:
042 return "by running the opponent out of time.";
043 default:
044 throw new RuntimeException(
045 "No human readable game over message if the game isn't over.");
046 }
047 }
048 }