WoT の主砲マーカー (Gun Marker) は AvatarInputHandler.control_modes._FlashGunMarker で作成されます。 表示系のスクリプトやデータは SWF ファイル sniperCrosshair.swf から読まれますが、 データの実体の多くは sniperCrosshair.swf からインポートされている crosshairControls.swf に置かれています。

これらの SWF ファイルは res/packages/gui.pkg 内の gui/flash に置かれており、 他の多くのリソースと同様に、res_mods/<WOT_VERSION>/gui/flash に同名のファイルを置くことでその内容を置き換えることができます。

貫通インジケータ

SHOT_RESULT_TO_DEFAULT_COLOR, SHOT_RESULT_TO_ALT_COLOR

貫通インジケータの色と貫通可能性との対応表は scripts/client/gui/Scaleform/daapi/view/battle/shared/crosshair/settings.py に定義されています。

貫通インジケータは貫通可能性とカラーブラインドモードの有無に応じて以下の色となります。

ここで色の名前は後述するように SWF 内で定義される sprite の各フレームにつけられたラベル FrameLabel.name を指します。

color blind mode stats colors
DEFAULT_COLOR NOT_PIERCED red
DEFAULT_COLOR LITTLE_PIERCED orange
DEFAULT_COLOR GREAT_PIEARCED green
ALT_COLOR NOT_PIERCED purple
ALT_COLOR LITTLE_PIERCED yellow
ALT_COLOR GREAT_PIEARCED green

setGunMarkerColor

インジケータの色の切り替えは クラス CrosshairPanelContainer の 関数 setGunMarkerColor で行います。

この関数は指定された色をラベルにもつ主砲マーカーの画像を設定します。

crosshairControls.swf

sprites

表示用の画像のセットが sprites の領域にあります。 各 sprite はFlashアニメーションの形式になっていますが、実際には複数の画像をグループ化するためのコンテナとして使用されています。

例えば WoT 0.9.18.0 の crosshairControls.swf 内で定義されている ID=66 の sprite (crosshairControls_fla.A_3) では、 6個の frame 、つまり、6個の画像を格納 (ID による参照) しており、 表示するフレーム番号、またはラベル名を指定することで画像を切り替える仕組みとなっています。

ここでの参照先はいずれも shape となっています。

ID 名称 UI上の表示
66 crosshairControls_fla.A_3 主砲マーカー A字型I (装甲貫通インジケータ付き)
67 crosshairControls_fla.A_4 主砲マーカー A字型II (装填インジケータ付き)
68 - 主砲マーカー A字型III
80 crosshairControls_fla.X_6 主砲マーカー 十字型I (装甲貫通インジケータ付き)
81 crosshairControls_fla.X_8 主砲マーカー 十字型II (装填インジケータ付き)
82 - 主砲マーカー 十字型III
93 crosshairControls_fla.Dot_10 主砲マーカー 照準点I (装甲貫通インジケータ付き)
94 crosshairControls_fla.Dot_11 主砲マーカー 照準点II (装填インジケータ付き)
95 crosshairControls_fla.Dot_12 主砲マーカー 照準点III
106 crosshairControls_fla.O_13 主砲マーカー O字型I (装甲貫通インジケータ付き)
107 crosshairControls_fla.O_14 主砲マーカー O字型II (装填インジケータ付き)
108 crosshairControls_fla.O_15 主砲マーカー O字型III
119 crosshairControls_fla.A_16 主砲マーカー A字型IV (装甲貫通インジケータ付き)
120 crosshairControls_fla.A_17 主砲マーカー A字型V (装填インジケータ付き)
121 crosshairControls_fla.A_18 主砲マーカー A字型VI

66: crosshairControls_fla.A_3 (主砲マーカー A字型I)

名称 参照ID FrameLabel.name
frame 1 55 normal
frame 2 57 red
frame 3 59 orange
frame 4 61 green
frame 5 63 purple
frame 6 65 yellow

shapes

画像の形状が定義されて、画像の原点の位置 (参照点) などはここで指定されます。 画像データそのものは別に定義された image の ID を参照する形で埋め込んでいます。

FFdec を使った SVG 形式でのエクスポートや置き換えが可能で、 エクスポート時には、画像のデータが実際に埋め込まれた状態でエクスポートされます。

次の表は crosshairControls_fla.A_3 (ID=66) で使用されている shape の一覧です。 Needed は埋め込み画像の参照先 ID 、 Dependent は各 shape を参照しているオブジェクト (ここでは sprite) の ID を表します。

ID Needed Dependent
55 54 66, 67, 68, 122, 132, 123
57 56 66, 122, 132, 123
59 58 66, 122, 132, 123
61 60 66, 67, 122, 132, 123
63 62 66, 122, 132, 123
65 64 66, 122, 132, 123

上記の Dependent ID のうち、 122, 132, 123 は照準設定 UI のための sprite で、 戦闘中に使用されるのは 66 (A字型I 貫通インジケータ付き), 67 (A字型II 装填インジケータ付き), 68 (A字型III) です。

A字型I ~ III を照準タイプ別にまとめると以下のようになります。

shape image A字型I (ID=66)
55 54 照準していないとき
57 56 not_pierced
59 58 little_pierced
61 60 great_pierced
63 62 not_pierced (color_blind)
65 64 little_pierced (color_blind)
shape image A字型II (ID=67)
55 54 装填中
61 60 装填完了
shape image A字型III (ID=68)
55 54 すべて

images

実際の画像データが定義されます。 幅や高さなどは定義されるが、原点の位置などの情報は持ちません。

FFdec により PNG 形式でのエクスポートや置き換えが可能です。