/** * License * THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS * CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). * THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. * ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR * COPYRIGHT LAW IS PROHIBITED. * * BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND * AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE * MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED * HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. * */ package l1j.server.server.model.map; import l1j.server.server.types.Point; /** * L1Map マップ情報を保持し、それに対する様々なインターフェースを提供する。 */ public abstract class L1Map { private static L1NullMap _nullMap = new L1NullMap(); protected L1Map() { } /** * このマップのマップIDを返す。 * * @return マップID */ public abstract int getId(); // TODO JavaDoc public abstract int getX(); public abstract int getY(); public abstract int getWidth(); public abstract int getHeight(); /** * 指定された座標の値を返す。 * * 推奨されていません。このメソッドは、既存コードとの互換性の為に提供されています。 * L1Mapの利用者は通常、マップにどのような値が格納されているかを知る必要はありません。 * また、格納されている値に依存するようなコードを書くべきではありません。 デバッグ等の特殊な場合に限り、このメソッドを利用できます。 * * @param x * 座標のX値 * @param y * 座標のY値 * @return 指定された座標の値 */ public abstract int getTile(int x, int y); /** * 指定された座標の値を返す。 * * 推奨されていません。このメソッドは、既存コードとの互換性の為に提供されています。 * L1Mapの利用者は通常、マップにどのような値が格納されているかを知る必要はありません。 * また、格納されている値に依存するようなコードを書くべきではありません。 デバッグ等の特殊な場合に限り、このメソッドを利用できます。 * * @param x * 座標のX値 * @param y * 座標のY値 * @return 指定された座標の値 */ public abstract int getOriginalTile(int x, int y); /** * 指定された座標がマップの範囲内であるかを返す。 * * @param pt * 座標を保持するPointオブジェクト * @return 範囲内であればtrue */ public abstract boolean isInMap(Point pt); /** * 指定された座標がマップの範囲内であるかを返す。 * * @param x * 座標のX値 * @param y * 座標のY値 * @return 範囲内であればtrue */ public abstract boolean isInMap(int x, int y); /** * 指定された座標が通行可能であるかを返す。 * * @param pt * 座標を保持するPointオブジェクト * @return 通行可能であればtrue */ public abstract boolean isPassable(Point pt); /** * 指定された座標が通行可能であるかを返す。 * * @param x * 座標のX値 * @param y * 座標のY値 * @return 通行可能であればtrue */ public abstract boolean isPassable(int x, int y); /** * 指定された座標のheading方向が通行可能であるかを返す。 * * @param pt * 座標を保持するPointオブジェクト * @return 通行可能であればtrue */ public abstract boolean isPassable(Point pt, int heading); /** * 指定された座標のheading方向が通行可能であるかを返す。 * * @param x * 座標のX値 * @param y * 座標のY値 * @return 通行可能であればtrue */ public abstract boolean isPassable(int x, int y, int heading); /** * 指定された座標の通行可能、不能を設定する。 * * @param pt * 座標を保持するPointオブジェクト * @param isPassable * 通行可能であればtrue */ public abstract void setPassable(Point pt, boolean isPassable); /** * 指定された座標の通行可能、不能を設定する。 * * @param x * 座標のX値 * @param y * 座標のY値 * @param isPassable * 通行可能であればtrue */ public abstract void setPassable(int x, int y, boolean isPassable); /** * 指定された座標がセーフティーゾーンであるかを返す。 * * @param pt * 座標を保持するPointオブジェクト * @return セーフティーゾーンであればtrue */ public abstract boolean isSafetyZone(Point pt); /** * 指定された座標がセーフティーゾーンであるかを返す。 * * @param x * 座標のX値 * @param y * 座標のY値 * @return セーフティーゾーンであればtrue */ public abstract boolean isSafetyZone(int x, int y); /** * 指定された座標がコンバットゾーンであるかを返す。 * * @param pt * 座標を保持するPointオブジェクト * @return コンバットゾーンであればtrue */ public abstract boolean isCombatZone(Point pt); /** * 指定された座標がコンバットゾーンであるかを返す。 * * @param x * 座標のX値 * @param y * 座標のY値 * @return コンバットゾーンであればtrue */ public abstract boolean isCombatZone(int x, int y); /** * 指定された座標がノーマルゾーンであるかを返す。 * * @param pt * 座標を保持するPointオブジェクト * @return ノーマルゾーンであればtrue */ public abstract boolean isNormalZone(Point pt); /** * 指定された座標がノーマルゾーンであるかを返す。 * * @param x * 座標のX値 * @param y * 座標のY値 * @return ノーマルゾーンであればtrue */ public abstract boolean isNormalZone(int x, int y); /** * 指定された座標が矢や魔法を通すかを返す。 * * @param pt * 座標を保持するPointオブジェクト * @return 矢や魔法を通す場合、true */ public abstract boolean isArrowPassable(Point pt); /** * 指定された座標が矢や魔法を通すかを返す。 * * @param x * 座標のX値 * @param y * 座標のY値 * @return 矢や魔法を通す場合、true */ public abstract boolean isArrowPassable(int x, int y); /** * 指定された座標のheading方向が矢や魔法を通すかを返す。 * * @param pt * 座標を保持するPointオブジェクト * @param heading * 方向 * @return 矢や魔法を通す場合、true */ public abstract boolean isArrowPassable(Point pt, int heading); /** * 指定された座標のheading方向が矢や魔法を通すかを返す。 * * @param x * 座標のX値 * @param y * 座標のY値 * @param heading * 方向 * @return 矢や魔法を通す場合、true */ public abstract boolean isArrowPassable(int x, int y, int heading); /** * このマップが、水中マップであるかを返す。 * * @return 水中であれば、true */ public abstract boolean isUnderwater(); /** * このマップが、ブックマーク可能であるかを返す。 * * @return ブックマーク可能であれば、true */ public abstract boolean isMarkable(); /** * このマップが、ランダムテレポート可能であるかを返す。 * * @return ランダムテレポート可能であれば、true */ public abstract boolean isTeleportable(); /** * このマップが、MAPを超えたテレポート可能であるかを返す。 * * @return テレポート可能であれば、true */ public abstract boolean isEscapable(); /** * このマップが、復活可能であるかを返す。 * * @return 復活可能であれば、true */ public abstract boolean isUseResurrection(); /** * このマップが、パインワンド使用可能であるかを返す。 * * @return パインワンド使用可能であれば、true */ public abstract boolean isUsePainwand(); /** * このマップが、デスペナルティがあるかを返す。 * * @return デスペナルティがあれば、true */ public abstract boolean isEnabledDeathPenalty(); /** * このマップが、ペット・サモンを連れて行けるかを返す。 * * @return ペット・サモンを連れて行けるならばtrue */ public abstract boolean isTakePets(); /** * このマップが、ペット・サモンを呼び出せるかを返す。 * * @return ペット・サモンを呼び出せるならばtrue */ public abstract boolean isRecallPets(); /** * このマップが、アイテムを使用できるかを返す。 * * @return アイテムを使用できるならばtrue */ public abstract boolean isUsableItem(); /** * このマップが、スキルを使用できるかを返す。 * * @return スキルを使用できるならばtrue */ public abstract boolean isUsableSkill(); /** * 指定された座標が釣りゾーンであるかを返す。 * * @param x * 座標のX値 * @param y * 座標のY値 * @return 釣りゾーンであればtrue */ public abstract boolean isFishingZone(int x, int y); /** * 指定された座標にドアが存在するかを返す。 * * @param x * 座標のX値 * @param y * 座標のY値 * @return ドアがあればtrue */ public abstract boolean isExistDoor(int x, int y); public static L1Map newNull() { return _nullMap; } /** * 指定されたptのタイルの文字列表現を返す。 */ public abstract String toString(Point pt); /** * このマップがnullであるかを返す。 * * @return nullであれば、true */ public boolean isNull() { return false; } } /** * 何もしないMap。 */ class L1NullMap extends L1Map { public L1NullMap() { } @Override public int getId() { return 0; } @Override public int getX() { return 0; } @Override public int getY() { return 0; } @Override public int getWidth() { return 0; } @Override public int getHeight() { return 0; } @Override public int getTile(int x, int y) { return 0; } @Override public int getOriginalTile(int x, int y) { return 0; } @Override public boolean isInMap(int x, int y) { return false; } @Override public boolean isInMap(Point pt) { return false; } @Override public boolean isPassable(int x, int y) { return false; } @Override public boolean isPassable(Point pt) { return false; } @Override public boolean isPassable(int x, int y, int heading) { return false; } @Override public boolean isPassable(Point pt, int heading) { return false; } @Override public void setPassable(int x, int y, boolean isPassable) { } @Override public void setPassable(Point pt, boolean isPassable) { } @Override public boolean isSafetyZone(int x, int y) { return false; } @Override public boolean isSafetyZone(Point pt) { return false; } @Override public boolean isCombatZone(int x, int y) { return false; } @Override public boolean isCombatZone(Point pt) { return false; } @Override public boolean isNormalZone(int x, int y) { return false; } @Override public boolean isNormalZone(Point pt) { return false; } @Override public boolean isArrowPassable(int x, int y) { return false; } @Override public boolean isArrowPassable(Point pt) { return false; } @Override public boolean isArrowPassable(int x, int y, int heading) { return false; } @Override public boolean isArrowPassable(Point pt, int heading) { return false; } @Override public boolean isUnderwater() { return false; } @Override public boolean isMarkable() { return false; } @Override public boolean isTeleportable() { return false; } @Override public boolean isEscapable() { return false; } @Override public boolean isUseResurrection() { return false; } @Override public boolean isUsePainwand() { return false; } @Override public boolean isEnabledDeathPenalty() { return false; } @Override public boolean isTakePets() { return false; } @Override public boolean isRecallPets() { return false; } @Override public boolean isUsableItem() { return false; } @Override public boolean isUsableSkill() { return false; } @Override public boolean isFishingZone(int x, int y) { return false; } @Override public boolean isExistDoor(int x, int y) { return false; } @Override public String toString(Point pt) { return "null"; } @Override public boolean isNull() { return true; } }