0_0_43
Moving 動作に Reback 動作を加え往復の安全性を高めた
_43 にある現在わかっているバグについて
- PickTileQuaA のサイズは 0
- MvTargetCT = 2
- SwapReColorQue = 0
- SwapColorQue = 2
この状態で、 MvBricksPaiRFlag = True;
Swapが終わっても次キューに入っている移動色切り替えは終わっていないため延々キューが入った状態が継続される
3-Match判定があったとき、
- MvTargetCT = 4
- SwapColorQue = 4
この二つが一時的に 4 となっている時に 3-Match が成立してしまうと SwapReColor 関数が実行されてないエラー
TS_CK_Vanish(); 関数は TS_CK_Swap(); 関数から呼び出されていて、その直後の非関数処理部分に問題が多そう。
K_Vanish();
ds_grid_copy(Aval, MG);
if (PickTileF==false){
if (ds_queue_empty(PickTileQueA)==true){
if (ds_queue_empty(PickTileQueB)==true){
if (ds_queue_empty(SwapReColorQue)==true){
PickTiID = noone;
SlideDir = noone;
PickTileF = false;
MvTargetCT = 0;
MvBricksPaiRFlag = false;
};
};
};
};
VanishFlag = false;
TouchDisable = true;
上記ステートメントは、
- MvTargetCT = 4
- SwapColorQue = 4
この条件時には実行されていない
エラーステータスを解析中、QF_Movement へ処理が移ったが上手に処理されていない
else{
if (MvTargetCT==0){
ds_queue_clear(PickTileQueA);
ds_queue_clear(PickTileQueB);
PF_Check_IDandPos();
MvBricksPaiRFlag = false;
}
else{
var d = ((c - MvTargetCT)>>1);
//show_message("d = "+string(d));
/*repeat(d){
ds_queue_dequeue(a);
ds_queue_dequeue(b);
};*/
ds_queue_copy(PickTileQueA, a);
ds_queue_copy(PickTileQueB, b);
};
};
処理を上記に変更。
- ds_queue_dequeue(a);
- ds_queue_dequeue(b);
この二つの処理を実行しないようにした。
上記条件は、3-Matchがあったときに、まだ他の移動色タイルがあった時の動作を定義したものだが ここで dequeueしたため他の数値と数が合わなくなり整合性を失っていた
しかし更に問題点発生:::
3-Match が無かった時の処理にエラーが発生するようになった
調べてみたら、Swap処理で連続処理が発生している時は
/*repeat(d){
ds_queue_dequeue(a);
ds_queue_dequeue(b);
};*/
この処理が利用されていた。ということは 3-Match判定があった時だけこの処理をしないようにするべきだったか
else{
if(VanishFlag==false){
var d = ((c - MvTargetCT)>>1);
//show_message("d = "+string(d));
repeat(d){
ds_queue_dequeue(a);
ds_queue_dequeue(b);
};
ds_queue_copy(PickTileQueA, a);
ds_queue_copy(PickTileQueB, b);
}
else{
ds_queue_copy(PickTileQueA, a);
ds_queue_copy(PickTileQueB, b);
};
};
これで3-Match判定が無かった時の連続処理も直せた。
負荷を与えながらテストもパス、しかし3連続でタイル入れ替えを高速操作したら FATAL ERROR 発生 TS_CK_Vanish に問題が出ている。
次へ
前へ