| はじめまして。 センエツながら、新機能の提案をいたします。
私は、ユニット用特殊能力「発光」の追加を提案します。 本能力は、ステータス画面には表示されず、レベル指定は無意味です。 Nightコマンドによってマップ全体を暗く表示する際に、 本能力を持つユニットが暗くならないように(タイル画像は暗くなる)し、 結果として発光しているように見えるというものです。 また、Nightコマンド以外のマップ色調変更コマンドには何の影響もありません。
従来は、Nightコマンドの"マップ限定"オプションによって、 マップ上の全ユニットを暗くさせないか、マップ上の全ユニットを暗くさせるか、その二択しか選択肢がありませんでした。 これでは特定のユニットだけ元の色のままにしたいと思っても不可能です。 おそらく、インクルードなどでサブルーチンを使っても不可能か、少なくとも困難でしょう。 また、Nightコマンドの"マップ限定"オプションでは、タイル画像も暗くならなくなるので、発光しているユニットの表現としては少し無理があります。 以上の理由で今回の提案をいたしました。
なお、以下のようなソースコードの変更を考えています。 もとにしたソースコードはバージョン2.3.1のものです。 ・「GUI.bas」の3890行目付近(サブルーチン"LoadUnitBitmap"内) 'ユニット画像を二重に上塗りするのを防ぐために '条件式を追加 'ret = TransparentBlt(.picTmp32(1).hDC, 0, 0, 32, 32, _ ' .picTmp32(0).hDC, 0, 0, 32, 32, vbWhite) l V If Not (MapDrawMode = "夜") _ Or MapDrawIsMapOnly _ Or use_orig_color Then ret = TransparentBlt(.picTmp32(1).hDC, 0, 0, 32, 32, _ .picTmp32(0).hDC, 0, 0, 32, 32, vbWhite) End If ・「GUI.bas」の3920行目付近(サブルーチン"LoadUnitBitmap"内) 'ユニット画像を二重に上塗りするのを防ぐために '条件式を追加 'ret = BitBlt(.picTmp32(1).hDC, 0, 0, 32, 32, _ ' .picTmp32(2).hDC, 0, 0, SRCERASE) 'ret = BitBlt(.picTmp32(1).hDC, 0, 0, 32, 32, _ ' .picTmp32(0).hDC, 0, 0, SRCINVERT) l V If Not (MapDrawMode = "夜") _ Or MapDrawIsMapOnly _ Or use_orig_color Then ret = BitBlt(.picTmp32(1).hDC, 0, 0, 32, 32, _ .picTmp32(2).hDC, 0, 0, SRCERASE) ret = BitBlt(.picTmp32(1).hDC, 0, 0, 32, 32, _ .picTmp32(0).hDC, 0, 0, SRCINVERT) End If ・「GUI.bas」の3960行目付近(サブルーチン"LoadUnitBitmap"内) Select Case MapDrawMode Case "夜" GetImage .picTmp32(1) Dark SetImage .picTmp32(1) Case ・・・ l V ' ユニットが"発光"の特殊能力を持つ場合、 ' ユニット画像を、暗くしたタイル画像の上に描画する。 Select Case MapDrawMode Case "夜" GetImage .picTmp32(1) Dark SetImage .picTmp32(1) If u.IsFeatureAvailable("発光") Then If UseTransparentBlt Then ret = TransparentBlt(.picTmp32(1).hDC, 0, 0, 32, 32, _ .picTmp32(0).hDC, 0, 0, 32, 32, vbWhite) Else ret = BitBlt(.picTmp32(1).hDC, 0, 0, 32, 32, _ .picTmp32(2).hDC, 0, 0, SRCERASE) ret = BitBlt(.picTmp32(1).hDC, 0, 0, 32, 32, _ .picTmp32(0).hDC, 0, 0, SRCINVERT) End If End If Case ・・・ ・また、「Unit.cls」の980行目付近(関数"FeatureNameInt"内)で、非表示にする特殊能力名のCase文に"発光"を追加
もしかすると、この機能には需要がないかもしれませんが、これを追加することによって、全体がぼんやり光っているユニットの表現が可能になります。
このソースコード、この新機能、あるいはこの書き込み自体に問題があるのなら 出来るだけ速やかに修正いたします。
ご意見お待ちしております。
|