Пример #1
0
        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);
        }
Пример #2
0
 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;
     }
 }
Пример #3
0
 public IMAction()
 {
     this.GetPropertyInfo(nameof(Type));
     if (this.ParentAction != null)
     {
         return;
     }
     this.ParentAction = this;
 }
Пример #4
0
 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;
     }
 }
Пример #5
0
        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
                });
            }
Пример #7
0
 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");
     }
 }
Пример #8
0
        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);
        }
Пример #9
0
        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
            });
        }