マップエディタに塗りつぶし機能を追加する

Shiftを押しながら左クリックだと、選択したマップにある全てのタイルを置き換える。
【fill】ボタンではマップにある全てのタイルを置き換える。

ペイントみたいな同じ種類のタイルや壁を選んでくっついている所だけ変える機能が欲しいと思ったので
早速作ってみた。

結構前にハウスボードのマップ編集機能に塗りつぶし機能を追加したので流用というよりコピペすれば解決すると考えていた。

だが【call *effect,(efId=spMakeWall)】で壁を作る処理を楽しようとしていた弊害か、タイルは正常でも壁の塗りつぶしが
うまく動作しなかった。

なんだかんだいじって、マップ配列の2つ目の要素の初期化漏れで、【map(x,y,2)=0】を追加して解決した。

ぱっと見てコメントの追加もやめたくなる似た変数乱舞なので今見ても手が出しにくい。
作る時は流れ図と設計を考えたけれどね。
こんな感じだ。

大まかな流れとしては、最初に選択したタイルを比較用変数に入れてから、【チェックタイル】に変える。
※数値はダミー用なので他のダミーやタイルと被らないものを使う。もう一つのダミーも同じ。
【チェックタイル】を見つけたら周りに比較用変数と同じタイルがあれば【チェックタイル】に置き換える。
8方向のチェックが終わったらダミーその2の【済みタイル】に置き換える。
これを繰り返して全て【済みタイル】になったら、マップ全体の【済みタイル】を塗りつぶすタイルに置き換える。
こんな感じで作ってた気がする。

 

 

LastUpdate:2018/08/06