最低限、以下に示す1~3の修正が必要です。
1. show_idによる分岐でcenterXの戻り値を変えるようにする
コード: 全て選択
const _Game_Player_centerX = Game_Player.prototype.centerX;
Game_Player.prototype.centerX = function() {
return show_id === 1 ? (Graphics.width / $gameMap.tileWidth() - 1) / 3.0 : _Game_Player_centerX.call(this);
};
show_id は0または1の二値しか値を取らないのであれば、booleanにしてしまっても良いとは思います。
2. プラグインコマンドの最後にプレイヤーの描画位置を更新する処理を追加する
コード: 全て選択
$gamePlayer.center($gamePlayer.x, $gamePlayer.y);
3. プラグイン名に合わせてパラメータ取得のためのキーを変更する
コード: 全て選択
const pluginName = 'map_Test';
const param = PluginManager.parameters(pluginName);
これでひとまず動作するようにはなります。
以下に示す4以降は、人に使ってもらうにあたって綺麗なコードにするための内容ですので、必須ではありません。
不慣れだと思いますので、かなり細かく書いています。余裕のあるときに一つずつ読んでみてください。
4. var ではなく let と const を使う
var は古い書き方で、今から新しく書くコードでは使うべきではないとされています。
(let とはスコープが違い、ブロックスコープである let のほうが直感的です)
const は再代入不可な定数を定義するものです。
定義した後、再び値を代入する必要がないものは const にしておくと、意図しない再代入を防ぐことができて安全です。
先程までの変更例で示した _Game_Player_centerX や pluginName が const なのはこのためです。
show_id は再代入の必要がある変数ですので、 let を使うと良いと思います。
5. プラグイン名や変数名を意味に即したものにする
プラグイン名は一時的な名前だとは思うのですが、どういう機能を持ったものであるかを表す名前になっていると良いと思います。
変数名も同様で、 N や show_id は現状の意味に即しているとは言えません。
現状の使われ方をそのままに名前をつけるとするなら例えば N は pluginCommandName, show_id は movePlayerCenterX などでしょうか。
(命名は個人の語彙力や趣味によって変わってくるので、これはあくまで一例です)
6. プラグインコマンドを整理する
現在の機能ではON/OFFを切り替えるのみなので、想定される使い方次第ではありますが、show_idやon, offと言ったパラメータは不要になるかもしれません。
コード: 全て選択
if (command === N) {
show_id = (show_id + 1) % 2;
$gamePlayer.center($gamePlayer.x, $gamePlayer.y);
}
(show_idが数値型なので剰余を使用していますが、真偽値であれば !show_id を代入するだけになります)
もちろん、今後の機能拡張でパラメータに意味を持たせる予定があるなら、残しておいても良いと思います。
6. 不要なコードを消す
Game_Interpreter.prototype.pluginCommand は元々、値を返さない関数です。
ですので、 ret に戻り値を代入して更に返すようにする、といったコードは不要になります。
単に _Game_Interpreter_pluginCommand を呼び出すだけで問題ありません。
7. インデントを揃える
WindowsでVSCodeをお使いであれば、 Shift + Alt + F で自動的にコードを整形してくれます。
(Macの場合は適宜読み替えてください)
設定次第では保存時に勝手に整形してくれますが、こちらはお好みで調べてみてください。
8. === で比較する
== でも現状は不都合が起きませんが、 == は特殊なケースにおいて、勝手に型変換が行われます。
例えば、 1 と "1" は数値型と文字列型ですが、 == では両者が等しいと判定されてしまいます。
単体では問題なく見えるかもしれませんが、型の違う値を等しいと判定されるとバグのもとになるため、値を比較する際には === を用いるのが良いとされています。
参考: JSPrimer - 暗黙的な型変換
https://jsprimer.net/basic/implicit-coercion/