private List <CanvasElement> AddCanvasElementsForAction( IMAction item, bool isLoadingFromFile = false) { List <CanvasElement> canvasElement1 = CanvasElement.GetCanvasElement(item, this, this.ParentWindow); foreach (CanvasElement canvasElement2 in canvasElement1) { canvasElement2.mIsLoadingfromFile = isLoadingFromFile; foreach (IMAction index in canvasElement2.ListActionItem) { this.dictCanvasElement[index] = canvasElement2; } if (canvasElement2.Parent == null) { this.mCanvas.Children.Add((UIElement)canvasElement2); canvasElement2.MouseLeftButtonDown -= new MouseButtonEventHandler(this.MoveIcon_PreviewMouseDown); canvasElement2.mResizeIcon.PreviewMouseDown -= new MouseButtonEventHandler(this.ResizeIcon_PreviewMouseDown); canvasElement2.MouseLeftButtonDown += new MouseButtonEventHandler(this.MoveIcon_PreviewMouseDown); canvasElement2.mResizeIcon.PreviewMouseDown += new MouseButtonEventHandler(this.ResizeIcon_PreviewMouseDown); } if (this.SidebarWindow == null) { canvasElement2.Visibility = Visibility.Hidden; } } KMManager.listCanvasElement.Add(canvasElement1); return(canvasElement1); }
private void mIMActionsTreeView_SelectedItemChanged( object sender, RoutedPropertyChangedEventArgs <object> e) { this.mActionTextBox.IsEnabled = false; this.mActionTextBox.ScrollToLine(0); try { IMAction tag = (IMAction)(this.mIMActionsTreeView.SelectedItem as TreeViewItem).Tag; if (tag != null) { JsonSerializerSettings serializerSettings = Utils.GetSerializerSettings(); serializerSettings.Formatting = Formatting.Indented; this.mActionTextBox.Text = JsonConvert.SerializeObject((object)tag, serializerSettings); this.mActionJsonGrid.Visibility = Visibility.Visible; } else { this.mActionTextBox.Text = ""; this.mActionJsonGrid.Visibility = Visibility.Collapsed; } } catch { this.mActionTextBox.Text = ""; this.mActionJsonGrid.Visibility = Visibility.Collapsed; } }
public IMAction() { this.GetPropertyInfo(nameof(Type)); if (this.ParentAction != null) { return; } this.ParentAction = this; }
private void Canvas_MouseDown(object sender, MouseButtonEventArgs e) { if (CanvasElement.sFocusedTextBox != null) { WpfUtils.FindVisualParent <CanvasElement>(CanvasElement.sFocusedTextBox as DependencyObject).TxtBox_LostFocus(CanvasElement.sFocusedTextBox, new RoutedEventArgs()); } else { if (double.IsNaN(this.CanvasWindowLeft) && double.IsNaN(this.CanvasWindowTop)) { this.CanvasWindowLeft = this.Left; this.CanvasWindowTop = this.Top; this.mMousePointForNewTap = Mouse.GetPosition((IInputElement)this.mCanvas); } KeymapCanvasWindow.sIsDirty = true; try { this.DragMove(); } catch (Exception ex) { } if (Math.Abs(this.CanvasWindowLeft - this.Left) < 2.0 && Math.Abs(this.CanvasWindowTop - this.Top) < 2.0) { if (KMManager.sIsInScriptEditingMode && this.mIsExtraSettingsPopupOpened) { return; } Tap tap = new Tap(); tap.Type = KeyActionType.Tap; IMAction imAction = (IMAction)tap; if (this.ParentWindow.SelectedConfig.ControlSchemes.Count == 0 && CanvasElement.sFocusedTextBox != null) { WpfUtils.FindVisualParent <CanvasElement>(CanvasElement.sFocusedTextBox as DependencyObject).TxtBox_LostFocus(CanvasElement.sFocusedTextBox, new RoutedEventArgs()); } else { if (this.ParentWindow.SelectedConfig.ControlSchemes.Count == 0) { KMManager.AddNewControlSchemeAndSelect(this.ParentWindow, (IMControlScheme)null, false); } else if (this.ParentWindow.SelectedConfig.SelectedControlScheme.BuiltIn) { KMManager.CheckAndCreateNewScheme(); } this.ParentWindow.SelectedConfig.SelectedControlScheme.GameControls.Add(imAction); List <CanvasElement> source = this.AddCanvasElementsForAction(imAction, false); source.First <CanvasElement>().SetMousePoint(this.mMousePointForNewTap); source.First <CanvasElement>().IsRemoveIfEmpty = true; source.First <CanvasElement>().ShowTextBox((object)source.First <CanvasElement>().dictTextElemets.First <KeyValuePair <Positions, BlueStacks.Common.Tuple <string, TextBox, TextBlock, List <IMAction> > > >().Value.Item3); } } this.CanvasWindowLeft = double.NaN; this.CanvasWindowTop = double.NaN; } }
private void CreateGameControlCopy(IMAction originalAction, Point point, bool isNewScheme = true) { IMAction imAction = originalAction.DeepCopy <IMAction>(); imAction.PositionX = originalAction.PositionX + 1.0; List <CanvasElement> source = this.AddCanvasElementsForAction(imAction, false); if (isNewScheme) { KMManager.CheckAndCreateNewScheme(); } this.ParentWindow.SelectedConfig.SelectedControlScheme.GameControls.Add(imAction); this.StartMoving(source.First <CanvasElement>(), point); }
private void InitMouseSenstivity() { IMAction imAction = this.ParentWindow.SelectedConfig.SelectedControlScheme.GameControls.Where <IMAction>((Func <IMAction, bool>)(item => (object)item.GetType() == (object)typeof(Pan))).FirstOrDefault <IMAction>(); if (imAction != null && imAction is Pan pan && (pan.Tweaks & 32) == 0) { this.mShowSensitivity = Visibility.Visible; this.SensitivityPropertyType = IMAction.DictPropertyInfo[imAction.Type]["Sensitivity"].PropertyType; this.MouseSenstivityX = imAction["Sensitivity"].ToString(); this.MouseSenstivityY = Convert.ToDouble(imAction["Sensitivity"], (IFormatProvider)CultureInfo.InvariantCulture) == 0.0 ? Convert.ToDouble(imAction["SensitivityRatioY"], (IFormatProvider)CultureInfo.InvariantCulture).ToString("0.##", (IFormatProvider)CultureInfo.CurrentCulture) : (Convert.ToDouble(imAction["Sensitivity"], (IFormatProvider)CultureInfo.InvariantCulture) * Convert.ToDouble(imAction["SensitivityRatioY"], (IFormatProvider)CultureInfo.InvariantCulture)).ToString("0.##", (IFormatProvider)CultureInfo.CurrentCulture); this.SensitivityIMActionItemsX.Add(new IMActionItem() { ActionItem = "Sensitivity", IMAction = imAction }); this.SensitivityIMActionItemsY.Add(new IMActionItem() { ActionItem = "SensitivityRatioY", IMAction = imAction }); }
private void AssignGuidanceText(IMAction action, string origKey) { if (action.Guidance.ContainsKey(origKey) && !string.IsNullOrEmpty(action.Guidance[origKey])) { this.mKeyPropertyNameTextBox.Text = this.ParentWindow.SelectedConfig.GetUIString(action.Guidance[origKey]); } else if (action.Guidance.ContainsKey(this.mActionItemProperty) && !string.IsNullOrEmpty(action.Guidance[this.mActionItemProperty])) { this.mKeyPropertyNameTextBox.Text = this.ParentWindow.SelectedConfig.GetUIString(action.Guidance[this.mActionItemProperty]); if (action.Guidance.ContainsKey(origKey) || string.IsNullOrEmpty(this.mKeyPropertyNameTextBox.Text.Trim())) { return; } action.Guidance.Add(origKey, this.mKeyPropertyNameTextBox.Text.ToString((IFormatProvider)CultureInfo.InvariantCulture)); } else { BlueStacksUIBinding.Bind(this.mKeyPropertyNameTextBox, "STRING_ENTER_GUIDANCE_TEXT"); this.mKeyPropertyNameTextBox.FontStyle = FontStyles.Italic; this.mKeyPropertyNameTextBox.FontWeight = FontWeights.ExtraLight; BlueStacksUIBinding.BindColor((DependencyObject)this.mKeyPropertyNameTextBox, Control.ForegroundProperty, "DualTextBlockLightForegroundColor"); } }
internal bool AddActionItem(IMAction action) { this.PropertyType = IMAction.DictPropertyInfo[action.Type][this.ActionItemProperty].PropertyType; if (!this.PropertyType.Equals(typeof(string)) && !string.Equals(this.ActionItemProperty, "Sensitivity", StringComparison.InvariantCultureIgnoreCase) && (!string.Equals(this.ActionItemProperty, "EdgeScrollEnabled", StringComparison.InvariantCultureIgnoreCase) && !string.Equals(this.ActionItemProperty, "GamepadSensitivity", StringComparison.InvariantCultureIgnoreCase)) && (!string.Equals(this.ActionItemProperty, "MouseAcceleration", StringComparison.InvariantCultureIgnoreCase) && !string.Equals(this.ActionItemProperty, "SensitivityRatioY", StringComparison.InvariantCultureIgnoreCase) && (action.Type != KeyActionType.Scroll || !string.Equals(this.ActionItemProperty, "Speed", StringComparison.InvariantCultureIgnoreCase))) || action.Type == KeyActionType.State && (string.Equals(this.ActionItemProperty, "Name", StringComparison.InvariantCultureIgnoreCase) || string.Equals(this.ActionItemProperty, "Model", StringComparison.InvariantCultureIgnoreCase))) { this.mKeyPropertyNameTextBox.IsEnabled = false; } else { this.mKeyPropertyNameTextBox.IsEnabled = true; int length = this.mActionItemProperty.IndexOf("_alt1", StringComparison.InvariantCulture); string origKey = this.mActionItemProperty; if (length > 0) { origKey = this.mActionItemProperty.Substring(0, length); } this.AssignGuidanceText(action, origKey); } if ((action.Type == KeyActionType.Zoom || action.Type == KeyActionType.MouseZoom) && (string.Equals(this.ActionItemProperty, "Speed", StringComparison.InvariantCultureIgnoreCase) || string.Equals(this.ActionItemProperty, "Acceleration", StringComparison.InvariantCultureIgnoreCase) || string.Equals(this.ActionItemProperty, "Amplitude", StringComparison.InvariantCultureIgnoreCase))) { this.mKeyPropertyNameTextBox.IsEnabled = true; this.AssignGuidanceText(action, this.mActionItemProperty); } this.lstActionItem.Add(action); string str1 = this.mActionItemProperty; if (this.mActionItemProperty.EndsWith("_alt1", StringComparison.InvariantCulture)) { int length = this.mActionItemProperty.IndexOf("_alt1", StringComparison.InvariantCulture); if (length > 0) { str1 = this.mActionItemProperty.Substring(0, length); } } if (this.IsAddDirectionAttribute) { BlueStacksUIBinding.Bind(this.mKeyPropertyName, Constants.ImapLocaleStringsConstant + action.Type.ToString() + "_" + str1 + action.Direction.ToString()); } else { BlueStacksUIBinding.Bind(this.mKeyPropertyName, Constants.ImapLocaleStringsConstant + action.Type.ToString() + "_" + str1); } string str2 = action[this.ActionItemProperty].ToString(); if (string.Equals(this.ActionItemProperty, "SensitivityRatioY", StringComparison.InvariantCulture)) { double num1 = Convert.ToDouble(action[this.ActionItemProperty], (IFormatProvider)CultureInfo.InvariantCulture); double num2 = Convert.ToDouble(action["Sensitivity"], (IFormatProvider)CultureInfo.InvariantCulture); str2 = num1 == 0.0 || num2 == 0.0 ? (num1 == 0.0 ? 0.ToString("0.##", (IFormatProvider)CultureInfo.CurrentCulture) : num1.ToString("0.##", (IFormatProvider)CultureInfo.CurrentCulture)) : (num2 * num1).ToString("0.##", (IFormatProvider)CultureInfo.CurrentCulture); } this.mKeyTextBox.Tag = action[this.ActionItemProperty]; if (this.ActionItemProperty.StartsWith("Key", StringComparison.CurrentCultureIgnoreCase)) { BlueStacksUIBinding.Bind(this.mKeyTextBox, KMManager.GetStringsToShowInUI(str2)); } else { this.mKeyTextBox.Text = str2.ToString((IFormatProvider)CultureInfo.CurrentCulture); } if (this.ActionItemProperty.Equals("KeyWheel", StringComparison.InvariantCultureIgnoreCase)) { this.mKeyTextBox.ToolTip = (object)this.mKeyTextBox.Text; ToolTipService.SetShowOnDisabled((DependencyObject)this.mKeyTextBox, true); } if (this.lstActionItem.First <IMAction>().Type == KeyActionType.EdgeScroll && this.ActionItemProperty.Equals("EdgeScrollEnabled", StringComparison.InvariantCultureIgnoreCase)) { KMManager.AssignEdgeScrollMode(str2, this.mKeyTextBox); } if (!str2.Contains("Gamepad", StringComparison.InvariantCultureIgnoreCase) && !this.ActionItemProperty.Contains("Gamepad", StringComparison.InvariantCultureIgnoreCase)) { return(false); } BlueStacksUIBinding.Bind(this.mKeyTextBox, KMManager.GetKeyUIValue(str2)); this.mKeyTextBox.ToolTip = (object)this.mKeyTextBox.Text; return(true); }
public void AddGuidance( bool isGamePad, string category, string guidanceText, string guidanceKey, string actionItem, IMAction imAction) { if (imAction == null || string.IsNullOrEmpty(guidanceKey) || string.IsNullOrEmpty(actionItem)) { return; } Type propertyType = IMAction.DictPropertyInfo[imAction.Type][actionItem].PropertyType; double result; if ((object)propertyType == (object)typeof(double) && double.TryParse(guidanceKey, out result)) { guidanceKey = result.ToString((IFormatProvider)CultureInfo.CurrentCulture); if (actionItem.Equals("SensitivityRatioY", StringComparison.InvariantCultureIgnoreCase)) { guidanceKey = Convert.ToDouble(imAction["Sensitivity"], (IFormatProvider)CultureInfo.InvariantCulture) == 0.0 ? Convert.ToDouble(imAction["SensitivityRatioY"], (IFormatProvider)CultureInfo.InvariantCulture).ToString("0.##", (IFormatProvider)CultureInfo.CurrentCulture) : (Convert.ToDouble(imAction["Sensitivity"], (IFormatProvider)CultureInfo.InvariantCulture) * Convert.ToDouble(imAction["SensitivityRatioY"], (IFormatProvider)CultureInfo.InvariantCulture)).ToString("0.##", (IFormatProvider)CultureInfo.CurrentCulture); } } if (imAction is EdgeScroll && actionItem.Equals("EdgeScrollEnabled", StringComparison.InvariantCultureIgnoreCase)) { guidanceKey = Convert.ToBoolean(guidanceKey, (IFormatProvider)CultureInfo.InvariantCulture) ? "ON" : "OFF"; } string index = isGamePad ? "GamePad" : "KeyMap"; if (!this.mViewIgnoreList[index].ContainsKey(imAction.GetType()) || !this.mViewIgnoreList[index][imAction.GetType()].ContainsKey(actionItem) || !imAction.Guidance.ContainsKey(this.mViewIgnoreList[index][imAction.GetType()][actionItem])) { ObservableCollection <GuidanceCategoryViewModel> source = isGamePad ? this.GamepadViewGuidance : this.KeymapViewGuidance; GuidanceCategoryViewModel categoryViewModel1 = source.Where <GuidanceCategoryViewModel>((Func <GuidanceCategoryViewModel, bool>)(guide => string.Equals(guide.Category, category, StringComparison.InvariantCulture))).FirstOrDefault <GuidanceCategoryViewModel>(); if (categoryViewModel1 == null) { GuidanceViewModel guidanceViewModel = new GuidanceViewModel() { PropertyType = propertyType }; guidanceViewModel.GuidanceTexts.Add(guidanceText); guidanceViewModel.GuidanceKeys.Add(guidanceKey); GuidanceCategoryViewModel categoryViewModel2 = new GuidanceCategoryViewModel() { Category = category }; categoryViewModel2.GuidanceViewModels.Add(guidanceViewModel); source.Add(categoryViewModel2); } else { if ((object)propertyType != (object)typeof(double)) { GuidanceViewModel guidanceViewModel = categoryViewModel1.GuidanceViewModels.Where <GuidanceViewModel>((Func <GuidanceViewModel, bool>)(guide => (object)guide.PropertyType != (object)typeof(double) && guide.GuidanceTexts.Count == 1 && guide.GuidanceTexts.Contains(guidanceText))).FirstOrDefault <GuidanceViewModel>(); if (guidanceViewModel != null) { guidanceViewModel.GuidanceKeys.AddIfNotContain <string>(guidanceKey); goto label_16; } } if ((object)propertyType != (object)typeof(double)) { GuidanceViewModel guidanceViewModel = categoryViewModel1.GuidanceViewModels.Where <GuidanceViewModel>((Func <GuidanceViewModel, bool>)(guide => (object)guide.PropertyType != (object)typeof(double) && guide.GuidanceKeys.Count == 1 && guide.GuidanceKeys.Contains(guidanceKey))).FirstOrDefault <GuidanceViewModel>(); if (guidanceViewModel != null) { guidanceViewModel.GuidanceTexts.AddIfNotContain <string>(guidanceText); goto label_16; } } GuidanceViewModel guidanceViewModel1 = new GuidanceViewModel() { PropertyType = propertyType }; guidanceViewModel1.GuidanceTexts.Add(guidanceText); guidanceViewModel1.GuidanceKeys.Add(guidanceKey); categoryViewModel1.GuidanceViewModels.Add(guidanceViewModel1); } } label_16: if (this.mEditIgnoreList[index].ContainsKey(imAction.GetType()) && this.mEditIgnoreList[index][imAction.GetType()].Contains(actionItem)) { return; } ObservableCollection <GuidanceCategoryEditModel> source1 = isGamePad ? this.GamepadEditGuidance : this.KeymapEditGuidance; GuidanceCategoryEditModel categoryEditModel = source1.Where <GuidanceCategoryEditModel>((Func <GuidanceCategoryEditModel, bool>)(guide => string.Equals(guide.Category, category, StringComparison.InvariantCulture))).FirstOrDefault <GuidanceCategoryEditModel>(); if (categoryEditModel == null) { categoryEditModel = new GuidanceCategoryEditModel() { Category = category }; source1.Add(categoryEditModel); } GuidanceEditModel guidanceEditModel = (GuidanceEditModel)null; if ((object)propertyType == (object)typeof(string)) { guidanceEditModel = categoryEditModel.GuidanceEditModels.Where <GuidanceEditModel>((Func <GuidanceEditModel, bool>)(gem => gem.ActionType == imAction.Type && (object)gem.PropertyType == (object)propertyType && string.Equals(gem.GuidanceText, guidanceText, StringComparison.InvariantCultureIgnoreCase) && string.Equals(gem.GuidanceKey, guidanceKey, StringComparison.InvariantCultureIgnoreCase))).FirstOrDefault <GuidanceEditModel>(); } if (guidanceEditModel == null) { guidanceEditModel = (object)propertyType == (object)typeof(string) || (object)propertyType == (object)typeof(bool) ? (GuidanceEditModel) new GuidanceEditTextModel() : (GuidanceEditModel) new GuidanceEditDecimalModel(); guidanceEditModel.GuidanceText = guidanceText; guidanceEditModel.OriginalGuidanceKey = guidanceKey; guidanceEditModel.ActionType = imAction.Type; guidanceEditModel.PropertyType = propertyType; guidanceEditModel.IsEnabled = !string.Equals(actionItem, "KeyAction", StringComparison.InvariantCultureIgnoreCase) && !string.Equals(actionItem, "KeyMove", StringComparison.InvariantCultureIgnoreCase) && !string.Equals(actionItem, "KeyWheel", StringComparison.InvariantCultureIgnoreCase); categoryEditModel.GuidanceEditModels.Add(guidanceEditModel); } if (string.Equals(actionItem, "Speed", StringComparison.InvariantCultureIgnoreCase)) { guidanceEditModel.MaxValue = 1000.0; } guidanceEditModel.IMActionItems.Add(new IMActionItem() { ActionItem = actionItem, IMAction = imAction }); }