public bool HandleMouseInput(MouseInput mi)
        {
            // Exclusively uses left and right mouse buttons, but nothing else
            if (mi.Button != MouseButton.Left && mi.Button != MouseButton.Right)
            {
                return(false);
            }

            if (mi.Button == MouseButton.Right)
            {
                if (mi.Event == MouseInputEvent.Up)
                {
                    editorWidget.ClearBrush();
                    return(true);
                }

                return(false);
            }

            if (editorCursor.CurrentToken != cursorToken)
            {
                return(false);
            }

            var cell = worldRenderer.Viewport.ViewToWorld(mi.Location);

            if (mi.Button == MouseButton.Left && mi.Event != MouseInputEvent.Up && AllowResourceAt(cell))
            {
                var type  = (byte)ResourceType.ResourceType;
                var tile  = world.Map.Resources[cell];
                var index = (byte)Math.Min(tile.Index + 1, ResourceType.MaxDensity);

                action.Add(new CellResource(cell, tile, new ResourceTile(type, index)));
                resourceAdded = true;
            }
            else if (resourceAdded && mi.Button == MouseButton.Left && mi.Event == MouseInputEvent.Up)
            {
                editorActionManager.Add(action);
                action        = new AddResourcesEditorAction(world.Map, ResourceType);
                resourceAdded = false;
            }

            return(true);
        }
        public bool HandleMouseInput(MouseInput mi)
        {
            // Exclusively uses left and right mouse buttons, but nothing else
            if (mi.Button != MouseButton.Left && mi.Button != MouseButton.Right)
            {
                return(false);
            }

            if (mi.Button == MouseButton.Right)
            {
                if (mi.Event == MouseInputEvent.Up)
                {
                    editorWidget.ClearBrush();
                    return(true);
                }

                return(false);
            }

            if (editorCursor.CurrentToken != cursorToken)
            {
                return(false);
            }

            var cell = worldRenderer.Viewport.ViewToWorld(mi.Location);

            if (mi.Button == MouseButton.Left && mi.Event != MouseInputEvent.Up && resourceLayer.CanAddResource(ResourceType, cell))
            {
                action.Add(new CellResource(cell, resourceLayer.GetResource(cell), ResourceType));
                resourceAdded = true;
            }
            else if (resourceAdded && mi.Button == MouseButton.Left && mi.Event == MouseInputEvent.Up)
            {
                editorActionManager.Add(action);
                action        = new AddResourcesEditorAction(ResourceType, resourceLayer);
                resourceAdded = false;
            }

            return(true);
        }
Exemple #3
0
        public bool HandleMouseInput(MouseInput mi)
        {
            // Exclusively uses left and right mouse buttons, but nothing else
            if (mi.Button != MouseButton.Left && mi.Button != MouseButton.Right)
            {
                return(false);
            }

            if (mi.Button == MouseButton.Right)
            {
                if (mi.Event == MouseInputEvent.Up)
                {
                    editorWidget.ClearBrush();
                    return(true);
                }

                return(false);
            }

            if (mi.Button == MouseButton.Left)
            {
                if (mi.Event == MouseInputEvent.Down)
                {
                    painting = true;
                }
                else if (mi.Event == MouseInputEvent.Up)
                {
                    painting = false;
                }
            }

            if (!painting)
            {
                return(true);
            }

            if (mi.Event != MouseInputEvent.Down && mi.Event != MouseInputEvent.Move)
            {
                return(true);
            }

            if (editorCursor.CurrentToken != cursorToken)
            {
                return(false);
            }

            var cell     = worldRenderer.Viewport.ViewToWorld(mi.Location);
            var isMoving = mi.Event == MouseInputEvent.Move;

            if (mi.Modifiers.HasModifier(Modifiers.Shift))
            {
                FloodFillWithBrush(cell);
                painting = false;
            }
            else
            {
                PaintCell(cell, isMoving);
            }

            return(true);
        }