package org.mafagafogigante.dungeon.game; import java.io.Serializable; /** * A point in a tridimensional matrix. */ public class Point implements Serializable { private final int x; private final int y; private final int z; /** * Constructs a Point from three integers representing x, y, and z, respectively. */ public Point(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } /** * Constructs a Point from another Point and a Direction that is equivalent to the specified Point moved towards the * provided Direction. */ public Point(Point originalPoint, Direction shift) { this.x = originalPoint.getX() + shift.getOffset().getX(); this.y = originalPoint.getY() + shift.getOffset().getY(); this.z = originalPoint.getZ() + shift.getOffset().getZ(); } public int getX() { return x; } public int getY() { return y; } public int getZ() { return z; } @Override public boolean equals(Object object) { if (this == object) { return true; } if (object == null || getClass() != object.getClass()) { return false; } Point point = (Point) object; return getX() == point.getX() && getY() == point.getY() && getZ() == point.getZ(); } @Override public int hashCode() { int result = getX(); result = 31 * result + getY(); result = 31 * result + getZ(); return result; } @Override public String toString() { return String.format("{%d, %d, %d}", getX(), getY(), getZ()); } }