これはちょっと複雑な構成になるので、for文を使わず、すべて個別に設定しています。
場合によっては、オンとオフでランプの点灯が逆になる場合はX-Planeを再起動すれば正常になる。
-- 画像県警の初期設定 ---- -- D_AptNav ---- local image_D_1 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/tab_img/D-1.png") local image_D_2 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/tab_img/D-2.png") local image_D_3 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/tab_img/D-3.png") local image_D_4 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/tab_img/D-4.png") local image_D_5 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/tab_img/D-5.png") local image_D_6 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/tab_img/D-6.png") local image_D_7 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/tab_img/D-7.png") local image_D_8 = float_wnd_load_image(SCRIPT_DIRECTORY .. "/tab_img/D-8.png") image_D = { image_D_1, image_D_2, image_D_3, image_D_4, image_D_5, image_D_6, image_D_7, image_D_8 } local AptNav_lavel_text = { "View the Map", --D-1 "FMS destination", --D-2 "use ICAO", --D-3 "Use Nearest Airport", --D-4 "Track Plane", --D-5 "Comm info", --D-6 "Ramp", --D-7 "Taxi" --D-8 --この後のBackground Coloeは単独で指定している。 } local AptNav_view_command = { "pikitanga/AptNav/ToggleMap", --D-1 "pikitanga/AptNav/UseDest", --D-2 "pikitanga/AptNav/UseICAO", --D-3 "pikitanga/AptNav/UseNearest", --D-4 "pikitanga/AptNav/ToggleTracking", --D-5 "pikitanga/AptNav/ToggleComm", --D-6 "pikitanga/AptNav/ToggleRamp", --D-7 "pikitanga/AptNav/ToggleTaxi" --D-8 --この後のコマンドは単独で指定している。 } --D local press_hold_button = false --ボタン長押しでcommand_onceを連続トリガーするための変数 local ToggleMap = false --初期の円はグレー表示 local UseDest = false --初期の円はグレー表示 local UseICAO = false --初期の円はグレー表示 local UseNearest = false --初期の円はグレー表示 local ToggleTracking = false --初期の円はグレー表示 local ToggleComm = false --初期の円はグレー表示 local ToggleRamp = false --初期の円はグレー表示 local ToggleTaxi = false --初期の円はグレー表示 --------------------------------------------------------------------------------- --コマンドを使う場合、この設定が必要 local view_selector_wnd = nil --function show_wnd_2() view_selector_wnd = float_wnd_create(825, 442, 1, true) float_wnd_set_position(view_selector_wnd, 300, 100) float_wnd_set_title(view_selector_wnd, "X-Plane View Selector") float_wnd_set_imgui_builder(view_selector_wnd, "view_selector_build_wnd") float_wnd_set_onclose(view_selector_wnd, "on_close") --end function hide_wnd_2() if view_selector_wnd then float_wnd_destroy(view_selector_wnd) end end --------------------------------------------------------------------------------- function view_selector_build_wnd(view_selector_wnd, x, y) imgui.TextUnformatted(" B737-800X Zibo") if imgui.BeginTabBar("test_tabs") then -- flag NoToolTip flag ツールヒントなし -- ################################################## -------------------------------------------------- if imgui.BeginTabItem("D_Airport-Navigator") then ----------タブの内容を入れるスペース--------------- -- D-1 -----------------ToggleMap imgui.SetCursorPosX(10) -- +135 imgui.SetCursorPosY(52) imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.ImageButton(image_D_1, 120, 65) then ToggleMap = not ToggleMap --falseの否定になるのでtrueを返す(trueとfalseを繰り返す) command_once("pikitanga/AptNav/ToggleMap") end imgui.PopStyleColor() --ボタン下のテキスト(中心に入れる設定) local AptNav_text_1 = "View the Map" local text_size = imgui.CalcTextSize(AptNav_text_1) --テキストのサイズを取得 --68はボタンの中心位置、テキストサイズを半分にして引くとボタンに対してテキストが中心になる。 imgui.SetCursorPos(74 - (text_size / 2), imgui.GetCursorPosY()) --パラメーターは、Xの位置と、Yの位置 +135 imgui.TextUnformatted(AptNav_text_1) --ボタンナンバーの位置とラベル imgui.SetCursorPosX(15) imgui.SetCursorPosY(54) imgui.TextUnformatted("D-1") --円を作成してオンオフ表示する。(129, 61) if ToggleMap then --makeRedはtrueなので赤を表示 imgui.DrawList_AddCircleFilled(129, 61, 5, 0xFF00FF00) -- 横 +135 円を作成(黄緑) else imgui.DrawList_AddCircleFilled(129, 61, 5, 0x50FFFFFF) -- 横 +135 円を作成(グレー) end -- D-2 -----------------UseDest(FMSの行き先) imgui.SetCursorPosX(145) -- +130 imgui.SetCursorPosY(52) imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.ImageButton(image_D_2, 120, 65) then UseDest = true UseICAO = false UseNearest = false command_once("pikitanga/AptNav/UseDest") end imgui.PopStyleColor() --ボタン下のテキスト(中心に入れる設定) local AptNav_text_2 = "FMS destination" local text_size = imgui.CalcTextSize(AptNav_text_2) --テキストのサイズを取得 --68はボタンの中心位置、テキストサイズを半分にして引くとボタンに対してテキストが中心になる。 imgui.SetCursorPos(209 - (text_size / 2), imgui.GetCursorPosY()) --パラメーターは、Xの位置と、Yの位置 +135 imgui.TextUnformatted(AptNav_text_2) --ボタンナンバーの位置とラベル imgui.SetCursorPosX(150) imgui.SetCursorPosY(54) imgui.TextUnformatted("D-2") --円を作成してオンオフ表示する。(399, 61) if UseDest then --D-2 imgui.DrawList_AddCircleFilled(264, 61, 5, 0xFF00FF00) -- 横 +135 円を作成(黄緑)D-2 else imgui.DrawList_AddCircleFilled(264, 61, 5, 0x50FFFFFF) -- 横 +135 円を作成(グレー)D-2 end -- D-3 -----------------UseICAO imgui.SetCursorPosX(280) -- +135 imgui.SetCursorPosY(52) imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.ImageButton(image_D_3, 120, 65) then UseICAO = true UseDest = false UseNearest = false command_once("pikitanga/AptNav/UseICAO") end imgui.PopStyleColor() --ボタン下のテキスト(中心に入れる設定) local AptNav_text_3 = "use ICAO" local text_size = imgui.CalcTextSize(AptNav_text_3) --テキストのサイズを取得 --68はボタンの中心位置、テキストサイズを半分にして引くとボタンに対してテキストが中心になる。 imgui.SetCursorPos(344 - (text_size / 2), imgui.GetCursorPosY()) --パラメーターは、Xの位置と、Yの位置 +135 imgui.TextUnformatted(AptNav_text_3) --ボタンナンバーの位置とラベル imgui.SetCursorPosX(285) -- +135 imgui.SetCursorPosY(54) imgui.TextUnformatted("D-3") --円を作成してオンオフ表示する。(399, 61) if UseICAO then --makeRedはtrueなので赤を表示 imgui.DrawList_AddCircleFilled(399, 61, 5, 0xFF00FF00) -- 横 +135 円を作成(黄緑)D-3 else imgui.DrawList_AddCircleFilled(399, 61, 5, 0x50FFFFFF) -- 横 +135 円を作成(グレー)D-3 end -- D-4 -----------------UseNearest imgui.SetCursorPosX(415) -- +135 imgui.SetCursorPosY(52) imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.ImageButton(image_D_4, 120, 65) then UseNearest = true UseICAO = false UseDest = false command_once("pikitanga/AptNav/UseNearest") end imgui.PopStyleColor() --ボタン下のテキスト(中心に入れる設定) local AptNav_text_4 = "Use Nearest Airport" local text_size = imgui.CalcTextSize(AptNav_text_4) --テキストのサイズを取得 --68はボタンの中心位置、テキストサイズを半分にして引くとボタンに対してテキストが中心になる。 imgui.SetCursorPos(479 - (text_size / 2), imgui.GetCursorPosY()) -- +135 imgui.TextUnformatted(AptNav_text_4) --ボタンナンバーの位置とラベル imgui.SetCursorPosX(420) -- +135 imgui.SetCursorPosY(54) imgui.TextUnformatted("D-4") --円を作成してオンオフ表示する。(534, 61) if UseNearest then --D-4 imgui.DrawList_AddCircleFilled(534, 61, 5, 0xFF00FF00) -- 横 +135 円を作成(黄緑)D-4 else imgui.DrawList_AddCircleFilled(534, 61, 5, 0x50FFFFFF) -- 横 +135 円を作成(グレー)D-4 end -- D-5 -----------------ToggleTracking imgui.SetCursorPosX(550) -- +135 imgui.SetCursorPosY(52) imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.ImageButton(image_D_5, 120, 65) then ToggleTracking = not ToggleTracking command_once("pikitanga/AptNav/ToggleTracking") end imgui.PopStyleColor() --ボタン下のテキスト(中心に入れる設定) local AptNav_text_5 = "Track Plane" local text_size = imgui.CalcTextSize(AptNav_text_5) --テキストのサイズを取得 --68はボタンの中心位置、テキストサイズを半分にして引くとボタンに対してテキストが中心になる。 imgui.SetCursorPos(614 - (text_size / 2), imgui.GetCursorPosY()) --+135 imgui.TextUnformatted(AptNav_text_5) --ボタンナンバーの位置とラベル imgui.SetCursorPosX(555) -- +135 imgui.SetCursorPosY(54) imgui.TextUnformatted("D-5") --円を作成してオンオフ表示する。 if ToggleTracking then --makeRedはtrueなので赤を表示 imgui.DrawList_AddCircleFilled(669, 61, 5, 0xFF00FF00) -- 横 +135 円を作成(黄緑)D-5 else imgui.DrawList_AddCircleFilled(669, 61, 5, 0x50FFFFFF) -- 横 +135 円を作成(グレー)D-5 end -- D-6 -----------------ToggleComm imgui.SetCursorPosX(685) -- +135 imgui.SetCursorPosY(52) imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.ImageButton(image_D_6, 120, 65) then ToggleComm = not ToggleComm command_once("pikitanga/AptNav/ToggleComm") end imgui.PopStyleColor() --ボタン下のテキスト(中心に入れる設定) local AptNav_text_6 = "Comm info" local text_size = imgui.CalcTextSize(AptNav_text_6) --テキストのサイズを取得 --68はボタンの中心位置、テキストサイズを半分にして引くとボタンに対してテキストが中心になる。 imgui.SetCursorPos(749 - (text_size / 2), imgui.GetCursorPosY()) --+135 imgui.TextUnformatted(AptNav_text_6) --ボタンナンバーの位置とラベル imgui.SetCursorPosX(690) -- +135 imgui.SetCursorPosY(54) imgui.TextUnformatted("D-6") --円を作成してオンオフ表示する。 if ToggleComm then --makeRedはtrueなので赤を表示 imgui.DrawList_AddCircleFilled(804, 61, 5, 0xFF00FF00) -- 横 +135 円を作成 else imgui.DrawList_AddCircleFilled(804, 61, 5, 0x50FFFFFF) -- 横 +135 円を作成 end -- D-7 -----------------ToggleRamp imgui.SetCursorPosX(10) -- +135 imgui.SetCursorPosY(147) imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.ImageButton(image_D_7, 120, 65) then ToggleRamp = not ToggleRamp --falseの否定になるのでtrueを返す(trueとfalseを繰り返す) command_once("pikitanga/AptNav/ToggleRamp") end imgui.PopStyleColor() --ボタン下のテキスト(中心に入れる設定) local AptNav_text_7 = "Ramp" local text_size = imgui.CalcTextSize(AptNav_text_7) --テキストのサイズを取得 --68はボタンの中心位置、テキストサイズを半分にして引くとボタンに対してテキストが中心になる。 imgui.SetCursorPos(74 - (text_size / 2), imgui.GetCursorPosY()) --パラメーターは、Xの位置と、Yの位置 +135 imgui.TextUnformatted(AptNav_text_7) --ボタンナンバーの位置とラベル imgui.SetCursorPosX(15) imgui.SetCursorPosY(149) imgui.TextUnformatted("D-7") --円を作成してオンオフ表示する。(129, 61) if ToggleRamp then --makeRedはtrueなので赤を表示 imgui.DrawList_AddCircleFilled(129, 156, 5, 0xFF00FF00) -- 横 +135 円を作成(黄緑) else imgui.DrawList_AddCircleFilled(129, 156, 5, 0x50FFFFFF) -- 横 +135 円を作成(グレー) end -- D-8 -----------------ToggleTaxi imgui.SetCursorPosX(145) -- +135 imgui.SetCursorPosY(147) imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.ImageButton(image_D_8, 120, 65) then ToggleTaxi = not ToggleTaxi --falseの否定になるのでtrueを返す(trueとfalseを繰り返す) command_once("pikitanga/AptNav/ToggleTaxi") end imgui.PopStyleColor() --ボタン下のテキスト(中心に入れる設定) local AptNav_text_8 = "Taxi" local text_size = imgui.CalcTextSize(AptNav_text_8) --テキストのサイズを取得 --68はボタンの中心位置、テキストサイズを半分にして引くとボタンに対してテキストが中心になる。 imgui.SetCursorPos(209 - (text_size / 2), imgui.GetCursorPosY()) --パラメーターは、Xの位置と、Yの位置 +135 imgui.TextUnformatted(AptNav_text_8) --ボタンナンバーの位置とラベル imgui.SetCursorPosX(150) imgui.SetCursorPosY(149) imgui.TextUnformatted("D-8") --円を作成してオンオフ表示する。(129, 61) if ToggleTaxi then --makeRedはtrueなので赤を表示 imgui.DrawList_AddCircleFilled(264, 156, 5, 0xFF00FF00) -- 横 +135 円を作成(黄緑) else imgui.DrawList_AddCircleFilled(264, 156, 5, 0x50FFFFFF) -- 横 +135 円を作成(グレー) end imgui.SameLine() -- D-9 -----------------上段 imgui.SetCursorPosX(280) -- +152 imgui.SetCursorPosY(147) imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.Button(" Black", 128, 22) then command_once("pikitanga/AptNav/BackgroundBlack") end imgui.PopStyleColor() -- D-9 -----------------中段 imgui.SetCursorPosX(280) -- +152 imgui.SetCursorPosY(172) -- +26 imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.Button("Se,mitranslucent", 128, 21) then command_once("pikitanga/AptNav/BackgroundSemi") end imgui.PopStyleColor() -- D-9 -----------------下段 imgui.SetCursorPosX(280) -- +152 imgui.SetCursorPosY(196) -- +26 imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.Button("None", 128, 22) then command_once("pikitanga/AptNav/BackgroundNone") end imgui.PopStyleColor() --ボタン下のテキスト(中心に入れる設定) local AptNav_text_8 = "Background Color" local text_size = imgui.CalcTextSize(AptNav_text_8) --テキストのサイズを取得 --68はボタンの中心位置、テキストサイズを半分にして引くとボタンに対してテキストが中心になる。 imgui.SetCursorPos(344 - (text_size / 2), imgui.GetCursorPosY()) --パラメーターは、Xの位置と、Yの位置 imgui.TextUnformatted(AptNav_text_8) --ボタンナンバーの位置とラベル imgui.SetCursorPosX(285) imgui.SetCursorPosY(149) imgui.PushStyleColor(imgui.constant.Col.Text, 0xFF000000) --黒 imgui.TextUnformatted("D-9") imgui.PopStyleColor() -- D-10 -----------------上段 imgui.SetCursorPosX(415) -- +152 imgui.SetCursorPosY(147) imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 imgui.Button(" MoveUp", 128, 22) if imgui.IsItemActive() then --imgui.IsItemActive()は常にfalseを返します press_hold_button = not press_hold_button --ボタンを押し続けてコマンドを連続で実行 command_once("pikitanga/AptNav/MoveDown") end imgui.PopStyleColor() -- D-10 -----------------中段左 imgui.SetCursorPosX(415) -- +152 imgui.SetCursorPosY(172) -- +26 imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 imgui.Button("Left", 42, 21) if imgui.IsItemActive() then press_hold_button = not press_hold_button --ボタンを押し続けてコマンドを連続で実行 command_once("pikitanga/AptNav/MoveRight") end imgui.PopStyleColor() -- D-10 -----------------中段中央 imgui.SetCursorPosX(459) -- 中段左より+44 imgui.SetCursorPosY(172) -- +26 imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 imgui.Button("Center", 40, 21) if imgui.IsItemActive() then press_hold_button = not press_hold_button --ボタンを押し続けてコマンドを連続で実行 command_once("pikitanga/AptNav/MoveCenter") end imgui.PopStyleColor() -- D-10 -----------------中段右 imgui.SetCursorPosX(501) --中段中央より+42 imgui.SetCursorPosY(172) -- +26 imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 imgui.Button("Right", 42, 21) if imgui.IsItemActive() then press_hold_button = not press_hold_button --ボタンを押し続けてコマンドを連続で実行 command_once("pikitanga/AptNav/MoveLeft") end imgui.PopStyleColor() -- D-10 -----------------下段 imgui.SetCursorPosX(415) -- +152 imgui.SetCursorPosY(196) -- +26 imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 imgui.Button("MoveDown", 128, 22) if imgui.IsItemActive() then press_hold_button = not press_hold_button --ボタンを押し続けてコマンドを連続で実行 command_once("pikitanga/AptNav/MoveUp") end imgui.PopStyleColor() --ボタンナンバーの位置とラベル imgui.SetCursorPosX(420) imgui.SetCursorPosY(149) imgui.PushStyleColor(imgui.constant.Col.Text, 0xFF000000) --黒 imgui.TextUnformatted("D-10") imgui.PopStyleColor() -- D-11 -----------------上段 imgui.SetCursorPosX(550) -- +152 imgui.SetCursorPosY(147) imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.Button(" Zoom Reset", 128, 21) then command_once("pikitanga/AptNav/ZoomReset") end imgui.PopStyleColor() --imgui.SameLine() -- D-11 -----------------下段左 imgui.SetCursorPosX(550) -- +152 imgui.SetCursorPosY(171) -- +26 imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.Button("Zoom In", 61, 47) then command_once("pikitanga/AptNav/ZoomIn") end imgui.PopStyleColor() -- D-11 -----------------下段右 imgui.SetCursorPosX(615) -- 左より+65 imgui.SetCursorPosY(171) -- +26 imgui.PushStyleColor(imgui.constant.Col.Button, "0xFFFF0080") --紫 if imgui.Button("Zoom Out", 63, 47) then command_once("pikitanga/AptNav/ZoomOut") end imgui.PopStyleColor() --ボタンナンバーの位置とラベル imgui.SetCursorPosX(555) imgui.SetCursorPosY(149) imgui.PushStyleColor(imgui.constant.Col.Text, 0xFF000000) --黒 imgui.TextUnformatted("D-11") imgui.PopStyleColor() ----------タブの内容を入れる END--------------- imgui.EndTabItem() end ----------タブの内容を入れる END------------- imgui.EndTabBar() end end function on_close(view_selector_wnd) end