Esempio n. 1
0
        private void Designer_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left && ActiveTool != null && CanSelectItem)
            {
                activeTool.OnMouseDown(this, e);
                //当活动的工具不是"选择"工具和事件绑定的情况下触发
                if ((activeTool.GetType().Name != typeof(ToolSelector).Name) && (OnItemChange != null))
                {
                    OnItemChange();
                }

                //取得鼠标在拖拽对像是的活动区域
                //Cursor.Clip = new Rectangle(Cursor.Position.X - e.X, Cursor.Position.Y - e.Y, this.Width, this.Height);
            }
            if (isdrawMousePosition)
            {
                //拖拽时记录起始位置
                mouseStartPos = new Point(e.X, e.Y);
                mouseXs       = new Point(0, e.Y);
                mouseXe       = new Point(e.X, e.Y);
                mouseYs       = new Point(e.X, 0);
                mouseYe       = new Point(e.X, e.Y);
                //this.Refresh();
            }
            //如果文本选择区域没有被选择则隐藏文本输入框
            if (SelectDrawText != null && !SelectDrawText.Selected && textBox.Visible)
            {
                SelectDrawText.TextValue = textBox.Text;
                textBox.Visible          = false;
                textBox.Enabled          = false;
                textBox.Text             = "";
            }
        }
Esempio n. 2
0
        private void RememberCurrentTool()
        {
            _previousTool = CurrentTool;
            var im = InfoManager.instance;

            _previousInfoMode    = im.NextMode;
            _previousSubInfoMode = im.NextSubMode;
            DebugLog.Info($"Remembering {_previousTool?.GetType().Name} and {im.NextMode},{im.NextSubMode}");
        }
Esempio n. 3
0
        private static FieldInfo GetBrushField(ToolBase tool)
        {
            var brushField = tool?.GetType()
                             .GetField("m_brush",
                                       BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

            if (brushField == null || brushField.FieldType != typeof(Texture2D))
            {
                return(null);
            }
            return(brushField);
        }
        private NetToolProxy(ToolBase target)
        {
            _target = target;

            var t = target.GetType();

            _controlPointCountField = GetPrivateField(t, "m_controlPointCount");
            _controlPointsField = GetPrivateField(t, "m_controlPoints");
            _toolControllerField = GetPrivateField(t, "m_toolController");
            _netInfoField = GetPublicField(t, "m_prefab");
            _snapField = GetPublicField(t, "m_snap");
            _modeField = GetPublicField(t, "m_mode");
        }
Esempio n. 5
0
        private NetToolProxy(ToolBase target)
        {
            _target = target;

            var t = target.GetType();

            _controlPointCountField = GetPrivateField(t, "m_controlPointCount");
            _controlPointsField     = GetPrivateField(t, "m_controlPoints");
            _toolControllerField    = GetPrivateField(t, "m_toolController");
            _netInfoField           = GetPublicField(t, "m_prefab");
            _snapField = GetPublicField(t, "m_snap");
            _modeField = GetPublicField(t, "m_mode");
        }
Esempio n. 6
0
 private void RestorePreviousTool()
 {
     if (_previousTool == ToolsModifierControl.GetTool <CameraTool>())
     {
         DebugLog.Info($"Restoring CameraTool -> DefaultTool");
         ToolsModifierControl.SetTool <DefaultTool>();
     }
     if (_previousTool != null)
     {
         DebugLog.Info($"Restoring {_previousTool?.GetType().Name}");
         ToolsModifierControl.toolController.CurrentTool = _previousTool;
         if (_previousTool == ToolsModifierControl.GetTool <DefaultTool>())
         {
             DebugLog.Info($"Restoring Modes {_previousInfoMode},{_previousSubInfoMode}");
             InfoManager.instance.SetCurrentMode(_previousInfoMode, _previousSubInfoMode);
         }
     }
     else
     {
         DebugLog.Info($"Restoring [null] -> DefaultTool");
         // no previous tool registered: reset to default tool
         ToolsModifierControl.SetTool <DefaultTool>();
     }
 }
Esempio n. 7
0
 private void OnForestBrushPanelVisibilityChanged(UIComponent component, bool visible)
 {
     if (visible)
     {
         ForestBrushPanel.ClampToScreen();
         lastTool = ToolsModifierControl.toolController.CurrentTool;
         ToolsModifierControl.SetTool <ForestTool>();
     }
     else
     {
         if (lastTool != null && lastTool.GetType() != typeof(TreeTool) && ToolsModifierControl.toolController.NextTool == null)
         {
             lastTool.enabled = true;
         }
     }
 }
Esempio n. 8
0
        private bool CheckCurrentTool()
        {
            if (!ModInfo.sa_disableShortcuts.value)
            {
                return(true);
            }

            ToolBase tool     = ToolsModifierControl.toolController.CurrentTool;
            string   toolName = tool.GetType().Name;

            if (
                tool is DefaultTool ||
                tool is NetTool ||
                tool is BuildingTool ||
                tool is PropTool ||
                tool is TreeTool ||
                toolName == "ForestTool")
            {
                return(true);
            }

            return(false);
        }
        public void CallEventForToolButton(UltraToolbarsManager objToolMgr, ToolBase objTool, string strEventName)
        {
            Logger.logBegin("CallEventForToolButton");
            if (objToolMgr == null) return;
            var objE = objToolMgr.GetType().GetEvent(strEventName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            Type objDlgt = objE.EventHandlerType;

            BindingFlags b = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static;
            MethodInfo objMethodMgr = objToolMgr.GetType().GetMethod(strEventName, b);
            MethodInfo objMethodBar = objTool.GetType().GetMethod(strEventName, b);

            Delegate objDMgr = Delegate.CreateDelegate(objDlgt, objMethodMgr);
            Delegate objDBar = Delegate.CreateDelegate(objDlgt, objMethodBar);

            var objED = (MulticastDelegate)objToolMgr.GetType().GetField(strEventName, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public).GetValue(objToolMgr);
            if (objED != null)
            {
                foreach (var handler in objED.GetInvocationList())
                {
                    handler.Method.Invoke(handler.Target, new object[] { objToolMgr, new ToolClickEventArgs(objTool, null) });
                }
            }
            Logger.logEnd("CallEventForToolButton");
        }
        /// <summary>
        /// We need to react to changes in current tool.
        /// If current tool is NOT <see cref="NetTool"/> then we must disable everything, while still remembering if the tool was enabled or not (so that we can restore this state once the tool becomes <see cref="NetTool"/> again).
        /// </summary>
        /// <param name="component"></param>
        /// <param name="value"></param>
        private void ToolBaseDetour_OnToolChanged(UIComponent component, ToolBase value)
        {
            if (value is NetTool)
            {
                // If we're in NetTool, we must restore our previous state + make the button visible
                _mainWindow.ToggleToolButton(true);
                _isToolActive = true;

                if (_isToolEnabled)
                {
                    // This means we also need to restore detours and show our main window again
                    ToggleDetours(true);
                    _mainWindow.isVisible = true;
                }
            }
            else
            {
                // We're not anymore in NetTool, so we must hide all of our UI and disable detours
                _mainWindow.ToggleToolButton(false);
                _mainWindow.isVisible = false;
                _isToolActive         = false;
                ToggleDetours(false);
            }

            Log._Debug($"[{nameof(ParallelRoadTool)}.{nameof(ToolBaseDetour_OnToolChanged)}] Changed tool to {value.GetType().Name} [{nameof(_isToolActive)}: {_isToolActive}, {nameof(_isToolEnabled)}: {_isToolEnabled}]");
        }
        private void ToolChanged(UIComponent component, ToolBase tool)
        {
            Log._Debug($"[{nameof(UIMainWindow)}.{nameof(ToolChanged)}] Changed tool to {tool.GetType().Name}");

            OnToolChanged?.Invoke(null, tool);
        }