cameraタグで移動中にセーブできないようにする
というわけで、そんな感じのことを書いていきます。一応自分のゲームで動作は確認しているのですが、カメラ移動の時間を結構短めにやっているので、他の方の環境だと違う現象が起こるかもしれません。その辺ご留意していただければ幸いです。
ティラノスクリプトではcameraが移動中かどうかを判定する変数がデフォルトであります。kag.jsのstat内でゲーム変数として定義されているものです。
is_move_camera:false, //カメラの演出中かどうか
これですね。cameraタグの中では
that.kag.stat.is_move_camera = true;
という感じで、カメラ移動する前にこの変数をtrueにして、終わったらfalseにしています。kag.tag_camera.jsを見ると分かりやすいです。
この変数は、wait_cameraタグで使われています。これがtrueの時はカメラを待ってる変数(is_wait_camera)がtrueになって、その時はnextOrderされない(次のタグに進まない)という形です。
で、この変数を利用すると、cameraタグで移動中には、セーブできないようにすることも可能です。セーブできないようにする、というか、セーブしようとしてボタンを押しても反応しない、という感じですね。
例えばbuttonタグのrole=saveを、カメラ移動中に封印する場合は、kag.tag.js内のtyrano.plugin.kag.tag.buttonの中身、
//roleが設定されている場合は対応する処理を実行
//指定できる文字列はsave(セーブ画面を表示します)。load(ロード画面を表示します)。title(タイトル画面に戻ります)。menu(メニュー画面を表示します)。message(メッセージウィンドウを非表示にします)。skip(スキップの実行)
if (_pm.role != "") {
という風に、roleの処理を定義している部分で。
//文字が流れているときは、セーブ出来ないようにする。
if(_pm.role =="save" ||
_pm.role =="menu" ||
_pm.role=="quicksave"||
_pm.role=="sleepgame"){
//テキストが流れているときとwait中は実行しない
if(that.kag.stat.is_adding_text == true || that.kag.stat.is_wait == true){
return false;
}
}
ここに
//文字が流れているときは、セーブ出来ないようにする。
if(_pm.role =="save" ||
_pm.role =="menu" ||
_pm.role=="quicksave"||
_pm.role=="sleepgame"){
//テキストが流れているときとwait中は実行しない
if(that.kag.stat.is_adding_text == true || that.kag.stat.is_wait == true ||
that.kag.stat.is_move_camera == true){
return false;
}
}
こんな感じで、この変数をorで加えれば、カメラ移動中、save,menu,quicksave,sleepgameのロールが振られているボタンをクリックしても、何も起こりません。これをsaveだけにしたい場合などは、that.kag.stat.is_move_cameraで個別に条件分岐すれば大丈夫ですね。
ちなみにkag.key_mouse.jsの
//役割系のロジック
_role : function(role) {
以下の_role定義内で、同じように書かれているので、ここで条件加えると、ゲーム自体でそういう動作になります。でもbuttonタグだけで使うなら、buttonタグ改造でいいのではないでしょうか。私はこっちで書いて、buttonタグでやればいいのでは……?となりました(真顔)。