石橋を叩いて壊すブログ

地図にカーソルを置く

前回の記事で地図の描画方法を書いたが、
地図には他にもカーソルを置くことができる。

もっとも、カーソルを扱うMapCursorクラスはコンストラクタが既にDeprecated(非推奨)なので、
必要がなければあまり触らないほうがよいだろう。

カーソルを置くのはとても簡単で、MapCursorCollectionクラスに適当にカーソルをつっこんで
MapCanvasでsetCursorsすればよい。

(冗長なのでrender(…)メソッドだけ抜粋)
//地図を描画する
@Override
public void render(MapView view, MapCanvas canvas, Player player) {

    MapCursorCollection cursors=new MapCursorCollection();

    cursors.addCursor(new MapCursor((byte)32, (byte)16, (byte)0, MapCursor.Type.BLUE_POINTER.getValue(), true));
    cursors.addCursor(new MapCursor((byte)32, (byte)32, (byte)2, MapCursor.Type.GREEN_POINTER.getValue(), true));
    cursors.addCursor(new MapCursor((byte)32, (byte)48, (byte)4, MapCursor.Type.RED_POINTER.getValue(), true));
    cursors.addCursor(new MapCursor((byte)32, (byte)64, (byte)6, MapCursor.Type.WHITE_CROSS.getValue(), true));
    cursors.addCursor(new MapCursor((byte)32, (byte)90, (byte)8, MapCursor.Type.WHITE_POINTER.getValue(), true));

    canvas.setCursors(cursors);
}



上のコードを実行するとこうなる。

理由はわからないが、どうやら地図にはカーソルを3~4個しか置くことができないようだ。
このため、コードでは5つのカーソルを一度に扱っているが、実際には上記の1枚目のスクリーンショットのように
自分が今いる場所と他に3つのカーソルだけしか表示されなかった。
スクリーンショットを2枚撮ったのは、一度に表示できなかった残り2つのカーソルをコードを書き換えて別に撮ったからだ。

MapCursorのコンストラクタに渡すカーソルの座標は、地図の中心が(0,0)で、左上が(-128,-128)になるようだ。
また、マップの縮尺を変更しても、左上は常に(-128,-128)だった。
MapCursorのコンストラクタの3つ目の引数はカーソルの向きで、ゼロだと下向きになり、以後時計周りに16方位を指定できる。

なぜDeprecatedなのか、なぜカーソルの表示数に上限があるのかわからないが、
カーソルの色や形はとてもわかりやすいので、うまく使えば宝探しやレーダーがわりに使うこともできそうだ。

この記事を評価

18 7

コメント

【この記事にコメント】
お名前:
コメント:

295,354

記事カテゴリー

最近の記事

  1. FF14を翻訳したら国によって結構特色が違った[12/11]
  2. ゼロから始めるFactorioの回路構築(実践例編)[7/24]
  3. ゼロから始めるFactorioの回路構築(条件回路・論理演算編)[7/24]
  4. ゼロから始めるFactorioの回路構築(定数回路・算術回路編)[7/24]
  5. ゼロから始めるFactorioの回路構築(入力・出力・混合編)[7/24]

RSS1.0 RSS2.0

最近のコメント

  1. おー、お役に立てたようでなによりです。再起…[9/11]
  2. この記事が非常の役立ちました。おかげさまで…[9/9]
  3. 1.14.2のAPIで試しましたが、MapInitializeEv…[9/9]
  4. 天晴れ!押したらポーションのモヤモヤでまし…[5/26]
  5. 習うより慣れろって感じで。この記事は記事冒…[4/7]

記事を検索


管理人

石橋

熱いお茶は良い…
心が洗われるようだ…