123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447 |
- /*
- DEPRECATED CONTENT
- */
- class JsonControlMappingInfo
- {
- int m_TabID;
- int m_TextWidgetID;
- string m_ButtonName;
- string m_InfoText;
- }
- class ControlsXbox extends UIScriptedMenu
- {
- protected string m_BackButtonTextID;
-
- protected ButtonWidget m_Back;
- protected ImageWidget m_ControlsLayoutImage;
- protected const int TABS_COUNT = 4;
- protected ImageWidget m_tab_images[TABS_COUNT];
- protected TabberUI m_TabScript;
-
- //============================================
- // ControlsXbox
- //============================================
- void ControlsXbox()
- {
-
- }
-
- void ~ControlsXbox()
- {
- PPERequesterBank.GetRequester(PPERequester_ControlsBlur).Stop();
- }
-
- void Back()
- {
- GetGame().GetUIManager().Back();
- }
-
- void DrawConnectingLines(int index)
- {
- ref array<ref JsonControlMappingInfo> control_mapping_info = new array<ref JsonControlMappingInfo>;
- ref array<ref array <ref JsonControlMappingInfo>> tab_array = new array<ref array <ref JsonControlMappingInfo>>;
-
- map<string, ref array<int>> button_marker_groups_unflitred = new map<string, ref array<int>>;
- map<string, ref array<int>> button_marker_groups = new map<string, ref array<int>>;
-
- float text_widget_pos_x, text_widget_pos_y;
- float text_widget_width, text_widget_height;
- float dot_pos_x, dot_pos_y;
- float dot_width, dot_height;
- float draw_pos_x, draw_pos_y;
-
- CanvasWidget canvas_widget = CanvasWidget.Cast(layoutRoot.FindAnyWidget("CanvasWidget_" + index));
- canvas_widget.Clear();
- control_mapping_info = GetControlMappingInfo();
-
- for (int i = 0; i < m_TabScript.GetTabCount(); i++)
- {
- tab_array.Insert(new array<ref JsonControlMappingInfo>);
- for (int j = 0; j < 20; j++)
- {
- tab_array[i].Insert(null);
- }
- }
-
- // insert json info to array by index, so it is sorted
- for (i = 0; i < control_mapping_info.Count(); i++)
- {
- JsonControlMappingInfo info = control_mapping_info.Get(i);
- tab_array[info.m_TabID][info.m_TextWidgetID] = info;
- }
-
- // create group of buttons which are connected together with line
- for (int l = 0; l < control_mapping_info.Count(); l++)
- {
- JsonControlMappingInfo info1 = control_mapping_info[l];
- string button_name = info1.m_ButtonName;
- int text_widget_id = info1.m_TextWidgetID;
- if (info1.m_TabID != index)
- {
- continue;
- }
- if (!button_marker_groups_unflitred.Contains(button_name))
- {
- button_marker_groups_unflitred.Insert(button_name, new ref array<int>);
- button_marker_groups_unflitred.Get(button_name).Insert(text_widget_id);
- }
- else
- {
- button_marker_groups_unflitred.Get(button_name).Insert(text_widget_id);
- }
- }
-
- // we want groups which are bigger than 1
- for (l = 0; l < button_marker_groups_unflitred.Count(); l++)
- {
- if (button_marker_groups_unflitred.GetElement(l).Count() > 1)
- {
- string key = button_marker_groups_unflitred.GetKey(l);
- button_marker_groups.Insert(button_marker_groups_unflitred.GetKey(l), button_marker_groups_unflitred.Get(key));
- }
- }
-
- Widget controls_image;
- // hide all button markers
- #ifdef PLATFORM_XBOX
- controls_image = layoutRoot.FindAnyWidget("XboxControlsImage");
- #else
- #ifdef PLATFORM_PS4
- controls_image = layoutRoot.FindAnyWidget("PSControlsImage");
- #endif
- #endif
-
- Widget child = controls_image.GetChildren();
- child.Show(false);
- while (child.GetSibling())
- {
- child = child.GetSibling();
- child.Show(false);
- }
- Widget panel_widget;
- Widget button_marker_widget;
-
- for (l = 0; l < tab_array[index].Count(); l++)
- {
- panel_widget = layoutRoot.FindAnyWidget("PanelWidget" + l);
- if (tab_array[index][l] != null)
- {
- TextWidget text_widget = TextWidget.Cast(panel_widget.FindAnyWidget("TextWidget" + l));
- string key_prefix;
- #ifdef PLATFORM_XBOX
- key_prefix = "xb_button_marker_";
- #else
- #ifdef PLATFORM_PS4
- key_prefix = "ps_button_marker_";
- #endif
- #endif
- button_marker_widget = layoutRoot.FindAnyWidget(key_prefix + tab_array[index][l].m_ButtonName);
- text_widget.SetText(tab_array[index][l].m_InfoText);
- panel_widget.Show(true);
- button_marker_widget.Show(true);
- panel_widget.Update();
- if (!button_marker_groups.Contains(tab_array[index][l].m_ButtonName))
- {
- panel_widget.GetScreenPos(text_widget_pos_x, text_widget_pos_y);
- panel_widget.GetScreenSize(text_widget_width,text_widget_height);
-
- button_marker_widget.GetScreenPos(dot_pos_x, dot_pos_y);
- button_marker_widget.GetScreenSize(dot_width, dot_height);
-
- draw_pos_y = text_widget_pos_y + text_widget_height / 2;
- if (l < 10)
- {
- draw_pos_x = text_widget_pos_x + text_widget_width - 1;
- }
- else
- {
- draw_pos_x = text_widget_pos_x;
- }
- canvas_widget.DrawLine(draw_pos_x, draw_pos_y, dot_pos_x+dot_width/2, draw_pos_y, 2, ARGBF(0.6, 1, 1, 1));
- canvas_widget.DrawLine(dot_pos_x+dot_width/2, draw_pos_y, dot_pos_x+dot_width/2, dot_pos_y+dot_height/2, 2, ARGBF(0.6, 1, 1, 1));
- }
- }
- else
- {
- panel_widget.Show(false);
- }
- panel_widget.Update();
- }
-
- // draw connecting lines
- for (l = 0; l < button_marker_groups.Count(); l++)
- {
- text_widget_pos_x = 0;
- text_widget_pos_y = 0;
- text_widget_width = 0;
- text_widget_height = 0;
- float group_point_x = 0, group_point_y = 0;
- float first_x = 0, first_y = 0;
-
- ref array<int> element = button_marker_groups.GetElement(l);
- string key_name = button_marker_groups.GetKey(l);
- #ifdef PLATFORM_XBOX
- key_prefix = "xb_button_marker_";
- #else
- #ifdef PLATFORM_PS4
- key_prefix = "ps_button_marker_";
- #endif
- #endif
- button_marker_widget = layoutRoot.FindAnyWidget(key_prefix + key_name);
-
- for (int g = 0; g < element.Count(); g++)
- {
- panel_widget = layoutRoot.FindAnyWidget("PanelWidget" + element[g]);
-
- panel_widget.GetScreenPos(text_widget_pos_x, text_widget_pos_y);
- panel_widget.GetScreenSize(text_widget_width, text_widget_height);
-
- if (g == 0)
- {
- if (element[0] < 10)
- {
- first_x = text_widget_pos_x + text_widget_width +50;
- }
- else
- {
- first_x = text_widget_pos_x - 50;
- }
- first_y = text_widget_pos_y + text_widget_height/2;
- }
- group_point_x += text_widget_pos_x;
- group_point_y += text_widget_pos_y;
- if (element[0] < 10)
- {
- canvas_widget.DrawLine(text_widget_pos_x + text_widget_width - 1, text_widget_pos_y + text_widget_height/2, text_widget_pos_x + text_widget_width +50, text_widget_pos_y + text_widget_height/2, 2, ARGBF(0.6, 1, 1, 1));
- }
- else
- {
- canvas_widget.DrawLine(text_widget_pos_x, text_widget_pos_y + text_widget_height/2, text_widget_pos_x - 50, text_widget_pos_y + text_widget_height/2, 2, ARGBF(0.6, 1, 1, 1));
- }
- }
- if (element[0] < 10)
- {
- group_point_x = group_point_x/element.Count() + text_widget_width + 50;
- }
- else
- {
- group_point_x = group_point_x/element.Count() - 50;
- }
- if (element.Count() % 2 == 0)
- {
- group_point_y = ((text_widget_pos_y + text_widget_height/2) - first_y) / 2 + first_y;
- }
- else
- {
- float text_widget_pos_x_center, text_widget_pos_y_center;
- float text_widget_width_center, text_widget_height_center;
-
- panel_widget = layoutRoot.FindAnyWidget("PanelWidget" + element[1]);
-
- panel_widget.GetScreenPos(text_widget_pos_x_center, text_widget_pos_y_center);
- panel_widget.GetScreenSize(text_widget_width_center, text_widget_height_center);
-
- group_point_y = text_widget_pos_y_center + text_widget_height_center / 2;
- }
-
- button_marker_widget.GetScreenPos(dot_pos_x, dot_pos_y);
- button_marker_widget.GetScreenSize(dot_width, dot_height);
-
- canvas_widget.DrawLine(group_point_x, group_point_y, dot_pos_x+dot_width/2, group_point_y, 2, ARGBF(0.6, 1, 1, 1));
- canvas_widget.DrawLine(dot_pos_x+dot_width/2, group_point_y, dot_pos_x+dot_width/2, dot_pos_y, 2, ARGBF(0.6, 1, 1, 1));
-
- if (element[0] < 10)
- {
- canvas_widget.DrawLine(first_x, first_y, text_widget_pos_x + text_widget_width +50, text_widget_pos_y + text_widget_height/2, 2, ARGBF(0.6, 1, 1, 1));
- }
- else
- {
- canvas_widget.DrawLine(first_x, first_y, text_widget_pos_x - 50, text_widget_pos_y + text_widget_height/2, 2, ARGBF(0.6, 1, 1, 1));
- }
- }
- }
-
- protected array<ref JsonControlMappingInfo> GetControlMappingInfo()
- {
- array<ref JsonControlMappingInfo> control_mapping_info = new array<ref JsonControlMappingInfo>;
-
- string file_path = "xbox/pagedatacontroller.json";
- #ifdef PLATFORM_PS4
- file_path = "ps4/pagedatacontroller.json";
- #endif
- FileHandle file_handle = OpenFile(file_path, FileMode.READ);
- JsonSerializer js = new JsonSerializer();
-
- string js_error = "";
- string line_content = "";
- string content = "";
- if (file_handle)
- {
- while (FGets(file_handle, line_content) >= 0)
- {
- content += line_content;
- }
- CloseFile(file_handle);
-
- if (js.ReadFromString(control_mapping_info, content, js_error))
- {
- return control_mapping_info;
- }
- else
- {
- ErrorEx("JSON ERROR => [ControlMappingInfo.json]: "+ js_error,ErrorExSeverity.INFO);
- }
- }
-
- return control_mapping_info;
- }
-
- //============================================
- // Init
- //============================================
- override Widget Init()
- {
- layoutRoot = GetGame().GetWorkspace().CreateWidgets("gui/layouts/xbox/control_mapping_info_screen.layout");
-
- layoutRoot.FindAnyWidget("Tabber").GetScript(m_TabScript);
-
- m_TabScript.m_OnTabSwitch.Insert(DrawConnectingLines);
-
- m_Back = ButtonWidget.Cast(layoutRoot.FindAnyWidget("back"));
- #ifdef PLATFORM_CONSOLE
- RichTextWidget toolbar_switch = RichTextWidget.Cast(layoutRoot.FindAnyWidget("ChangePresetIcon"));
- RichTextWidget toolbar_back = RichTextWidget.Cast(layoutRoot.FindAnyWidget("BackIcon"));
- toolbar_switch.SetText(InputUtils.GetRichtextButtonIconFromInputAction("UASwitchPreset", "", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
- toolbar_back.SetText(InputUtils.GetRichtextButtonIconFromInputAction("UAUIBack", "", EUAINPUT_DEVICE_CONTROLLER, InputUtils.ICON_SCALE_TOOLBAR));
- #endif
-
- #ifdef PLATFORM_XBOX
- layoutRoot.FindAnyWidget("XboxControlsImage").Show(true);
- #else
- #ifdef PLATFORM_PS4
- layoutRoot.FindAnyWidget("PSControlsImage").Show(true);
- #endif
- #endif
- m_tab_images[0] = ImageWidget.Cast(layoutRoot.FindAnyWidget("MovementTabBackdropImageWidget"));
- m_tab_images[1] = ImageWidget.Cast(layoutRoot.FindAnyWidget("WeaponsAndActionsBackdropImageWidget"));
- m_tab_images[2] = ImageWidget.Cast(layoutRoot.FindAnyWidget("InventoryTabBackdropImageWidget"));
- m_tab_images[3] = ImageWidget.Cast(layoutRoot.FindAnyWidget("MenusTabBackdropImageWidget"));
-
- PPERequester_MenuEffects requester;
- Class.CastTo(requester,PPERequesterBank.GetRequester(PPERequesterBank.REQ_MENUEFFECTS));
- requester.SetVignetteIntensity(0.6);
-
- DrawConnectingLines(0);
- return layoutRoot;
- }
-
- override void OnShow()
- {
- super.OnShow();
- #ifdef PLATFORM_CONSOLE
- //layoutRoot.FindAnyWidget("toolbar_bg").Show(!GetGame().GetInput().IsEnabledMouseAndKeyboard());
- layoutRoot.FindAnyWidget("toolbar_bg").Show(true);//TODO: temporarily always on for preset switching
-
- string preset_text;
- UAInputAPI inputAPI = GetUApi();
- TextWidget nameWidget;
- if (Class.CastTo(nameWidget,layoutRoot.FindAnyWidget("PresetText")));
- {
- preset_text = inputAPI.PresetName(inputAPI.PresetCurrent());
- nameWidget.SetText(preset_text);
- }
- #endif
- }
-
- override bool OnClick(Widget w, int x, int y, int button)
- {
- if (button == MouseState.LEFT)
- {
- if (w == m_Back)
- {
- Back();
- return true;
- }
- }
- return false;
- }
-
- override void Update(float timeslice)
- {
- if (GetUApi().GetInputByID(UAUITabLeft).LocalPress())
- {
- m_TabScript.PreviousTab();
- }
-
- if (GetUApi().GetInputByID(UAUITabRight).LocalPress())
- {
- m_TabScript.NextTab();
- }
-
- if (GetUApi().GetInputByID(UAUIBack).LocalPress())
- {
- Back();
- }
-
- if (GetUApi().GetInputByID(UASwitchPreset).LocalPress())
- {
- SwitchPreset();
- }
- }
-
- /// Initial texts load for the footer buttons
- protected void LoadFooterButtonTexts()
- {
- TextWidget uiBackText = TextWidget.Cast(layoutRoot.FindAnyWidget("BackText"));
- if (uiBackText)
- {
- uiBackText.SetText(m_BackButtonTextID);
- }
- }
- /// Set correct bottom button texts based on platform (ps4 vs xbox texts)
- protected void LoadTextStrings()
- {
- #ifdef PLATFORM_PS4
- m_BackButtonTextID = "ps4_ingame_menu_back";
- #else
- m_BackButtonTextID = "STR_rootFrame_toolbar_bg_ConsoleToolbar_Back_BackText0";
- #endif
- }
-
- protected void SwitchPreset()
- {
- int index;
- string preset_text;
- UAInputAPI inputAPI = GetUApi();
- TextWidget nameWidget;
-
- index = inputAPI.PresetCurrent() + 1;
- if (index >= inputAPI.PresetCount())
- {
- index = 0;
- }
-
- inputAPI.PresetSelect(index);
- if (Class.CastTo(nameWidget,layoutRoot.FindAnyWidget("PresetText")));
- {
- preset_text = inputAPI.PresetName(inputAPI.PresetCurrent());
- nameWidget.SetText(preset_text);
- }
-
- GetGame().GetInput().SetProfile(index);
- GetUApi().Export();
- GetGame().GetMission().GetOnInputPresetChanged().Invoke();
- }
- }
|