| >>ソースコードを見たところ、「X(目標地点)」の実体は整数型変数のようです。空文字だとその仕様も変えねばならないので、「-2」ではどうでしょうか。 > > 再度現行版で実験した所、 選択可能な範囲はマップサイズ+-7まで選択出来るようで > す。とはいえ「-7」などというのもきりが悪いですし、関数仕様の点はArgs()のように > 数値でも文字列でも返せるようにするのは問題ないはずなので、やはり空文字の方が筋 > が良いのではないかという気がします。
関数の戻り値設定だけを考えればよいのならたしかに問題ないのですが、この場合はもう少し複雑です。 (1) Appoint (SelectPoint) コマンドで SRC.exe 内部の整数型変数 SelectedX, SelectedY を設定(クリック座標を設定する既存コマンドと同様の処理) (2) X(), Y() 関数で SelectedX, SelectedY を参照。倍精度浮動小数点型変数を経て戻り値の形に変換して返す。
なので、空文字を返せるようにするには、SelectedX, SelectedY の仕様変更が必要で、それにともないこれらを使っている既存コマンドの変更やチェックも必要になってきます。特異値は、「-10」でも「-99」や「-255」でも何でもよいから、とにかく整数であれば、やはり手直しが簡明かと。 とはいえ、実際にプログラムするのは Keiさんなので、リクエストとしては両論併記で Keiさんに判断をお願いしてもいいと思います。
> それから一つ思い付いたのですが、オプションに「キャンセル可」を指定せずに「ユ > ニット選択」を指定すると、範囲内にユニットがいなかった場合に問題がありますね。 > 「キャンセル可」は無くして常にキャンセル可能にしておくべきでしょうか? ユニッ > トがいなかった場合のみキャンセル可が無くてもキャンセル同様の動作をさせるという > 方法もありますが、動作の一貫性が失われるのがいまいちです。
おお。それは気が付きませんでした。 「選択対象がなかった場合、キャンセル時とは別の特異値を返し、コマンドを終了する」というのはどうでしょうか。 得意値を別にするのは、独自に処理したい場合がありそうだからです。たとえば、ユニットがいないので無効なアクションだとプレイヤーに知らせる Talk 文など。 不統一感もなくなりますし。
他の部分には、異論ありません。
|