今回の追加部分。既存の部分もいじったのでかなり長くなるかも。
[MapEditor クラス]
public void eventStart(GameData gdt) {
gData=gdt;
int pushKey=0;
int cPlus=0;
mouseX=gData.pPlatform.mouseEvDragged[1];
mouseY=gData.pPlatform.mouseEvDragged[2];
click=gData.pPlatform.mouseEvDragged[0];
mouseCX=gData.pPlatform.mouseEv[1];
mouseCY=gData.pPlatform.mouseEv[2];
releaseC=gData.pPlatform.mouseEv[3];
clickC=gData.pPlatform.mouseEv[0];
if (releaseC==1 && mouseClicked==1) { System.out.println("mouseRelease sitayo"); mouseClicked=0;
}
gData=gdt;
まずここで一回解説を入れる。
rgData.pPlatform.mouseEv[3]; =releaseCというのはARPanelで新規に追加した要素。
マウスから手を離したときのみ1が入る様にしている。
mouseClickedというのは右枠のボタンのどれかを押したときに1になる変数。
リリースするまでこれが1で保持され、これが1の間はボタン操作を受け付けない。
そこら辺の処理はこれから出てくる。
//省略
case 1://総合メニュー if (pushKey==1) {
} if (pushKey==2) { mEditEnd=true; }
if (clickC==1) { //マップチップ配置フィールドでボタンを押したケース if (buttonCheck(0,0,544,544)) { //本来はチップ取得してから任意のチップを入力できるのだが、今回はテスト用に強制的に01を打ち込む。 int nmx=mouseX/32; int nmy=mouseY/32; if (setMode==0) maptipNumber[nmx+nowmx][nmy+nowmy]=nowChip; if (setMode==1) blockNumber[nmx+nowmx][nmy+nowmy]=selectBlockNumber; } //マップのスクロール if (buttonCheck(576,0,32,288)) nowmy--; if (buttonCheck(576,288,32,288)) nowmy++;; if (nowmy<=0) nowmy=0; if (nowmy>=myMax-17) nowmy=myMax-17; if (buttonCheck(0,576,288,32)) nowmx--;
if (buttonCheck(288,576,288,32)) nowmx++;; if (nowmx<=0) nowmx=0; if (nowmx>=mxMax-17) nowmx=mxMax-17;
//チップ取得フィールドのスクロール if (buttonCheck(768,0,32,160)) nowcy--; if (buttonCheck(768,160,32,160)) nowcy++; if (nowcy<=0) nowcy=0; if (nowcy>=cyMax-10) nowcy=cyMax-10; if (buttonCheck(608,320,80,32)) nowcx--; if (buttonCheck(688,320,80,32)) nowcx++; if (nowcx<=0) nowcx=0; if (nowcx>=cxMax-4) nowcx=cxMax-4; } if (clickC==1 && mouseClicked==0) { mouseClicked=1; //clickC=0; //チップ取得フィールドでボタンを押したケース if (buttonCheck(608,0,160,320)) { int nmx=(mouseX-608)/32+nowcx; int nmy=mouseY/32+nowcy; nowChip=pick_maptipNumber[nmx][nmy]; } int stx=608; int sty=360; if (buttonCheck(stx,sty,60,30) ) mEditEnd=true; //終了ボタン if (buttonCheck(stx+60,sty,60,30) ) mapDataSave(); //セーブボタン if (buttonCheck(stx+120,sty,60,30) ) mapDataLoad(); //ロードボタン if (buttonCheck(stx,sty+32,30,30) ) fileNumber--; if (buttonCheck(stx+60,sty+32,30,30) ) fileNumber++; if (buttonCheck(stx,sty+64,60,30) ) { if (setMode==0) { setMode=1; } else { setMode=0; } } if (setMode==1) { if (buttonCheck(stx+60,sty+64,60,30) ) selectBlockNumber=0; if (buttonCheck(stx+90,sty+64,60,30) ) selectBlockNumber=1; } if (fileNumber<=0) fileNumber=0; }
break;
}
}
大分処理の順番を入れ替えた。
if (clickC==1) {
の枠内は、従来通りにドラッグしたままチップを配置できる処理を入れている。
左のマップへ配置する処理と、スクロール処理。
if (clickC==1 && mouseClicked==0) { mouseClicked=1;
この先の処理は右枠のチップ取得とセーブやロードなどのボタン。
連打されると不都合な処理をまとめている。
ここでどれかのボタンをクリックしたらmouseClicked変数を1にして、
リリースされるまで無反応になる。