public static void TransitionState(GameStateView gsv)
        {
            var transSpd = 30;
            TransState = gsv;
            transitioning = true;
            if (gsv == CurrentState)
            {
                transitioning = false;
                if (transColor.A == 0)
                    return;
            }
            if (transColor.A == 255 && transitioning)
            {
                PreviousState = CurrentState;
                CurrentState = gsv;
                UI.SetCurrentInterface(CurrentState.Name);
                ReallignElements();
            }
            if (transColor.A < 255 && transitioning)
            {
                if (transColor.A <= 255 - transSpd)
                    transColor.A += (byte)transSpd;
                else
                    transColor.A++;
            }
            else if (transColor.A > 0 && !transitioning)
            {
                if (transColor.A >= transSpd)
                    transColor.A -= (byte)transSpd;
                else
                    transColor.A--;
            }

            transTex.SetData(new Color[] { transColor });
        }
        public static Command HandleInput(bool condition)
        {
            if (!condition) return null;
            keyCombos.Update();

            if (GameStateManager.IsEditing()) {
                if (keyCombos.CheckKeyComboStateWithPriorities("CTRL_Z")) {
                    Undo();
                }
                if (keyCombos.CheckKeyComboStateWithPriorities("CTRL_Y")) {
                    Redo();
                }

                if (keyCombos.CheckKeyComboStateWithPriorities("CTRL_SHIFT_M")) {
                    return new GenerateLevelMap(Game1.Graphics.GraphicsDevice);
                }

                if (Mouse.GetState().MiddleButton == ButtonState.Pressed) {
                    Point pos = Util.GetMouseDelta();
                    float zoom = Game1.Cam.Zoom;
                    return new MoveCamera(new Vector2(pos.X / zoom, pos.Y / zoom));
                }

                int scrollDelta;
                if (Keyboard.GetState().IsKeyDown(Keys.LeftControl) && (scrollDelta = Util.GetScrollDelta()) != 0) {
                    return new ZoomCamera((scrollDelta / 2400.0f) * Game1.Cam.Zoom);
                }
                if (Keyboard.GetState().IsKeyDown(Keys.LeftShift) && (scrollDelta = Util.GetScrollDelta()) != 0) {
                    return new ChangeBrushSize(scrollDelta / 120.0f);
                }
                if ((scrollDelta = Util.GetScrollDelta()) != 0) {
                    if (scrollDelta > 0)
                        return new RotateTile();
                    else
                        return new RotateTileBack();
                }
                if (Util.IsRightMouseButtonPressed()) {
                    return new RotateTile();
                }

                if (keyCombos.CheckKeyComboStateWithPriorities("CTRL_S")) {
                    return new SaveMap();
                }

                if (Mouse.GetState().LeftButton == ButtonState.Pressed && !Map.CurrentBrush.Tool.Used) {
                    uct = new UseCurrentTool();
                    return uct;
                }
                if (Mouse.GetState().LeftButton == ButtonState.Released && uct != null) {
                    if (currentIndex <= UndoableCommandsList.Count - 1)
                        UndoableCommandsList.RemoveRange(currentIndex + 1, (UndoableCommandsList.Count - currentIndex) - 1);
                    UndoableCommandsList.Add(uct);
                    uct = null;
                    currentIndex = UndoableCommandsList.Count - 1;
                }

                if (keyCombos.CheckKeyComboStateWithPriorities("PLUS")) {
                    tileType++;
                    if (tileType > Map.Settings.TileTypeCount - 1)
                        tileType = 0;
                    return new SwitchTileType(tileType);
                }
                if (keyCombos.CheckKeyComboStateWithPriorities("MINUS")) {
                    tileType--;
                    if (tileType < 0)
                        tileType = Map.Settings.TileTypeCount - 1;
                    return new SwitchTileType(tileType);
                }

                if (keyCombos.CheckKeyComboStateWithPriorities("B")) {
                    return new SwitchBrush();
                }

                if (keyCombos.CheckKeyComboStateWithPriorities("L")) {
                    return new IncrementActiveTileLayer();
                }
                if (keyCombos.CheckKeyComboStateWithPriorities("O")) {
                    return new DecrementActiveTileLayer();
                }
                if (keyCombos.CheckKeyComboStateWithPriorities("CTRL_L")) {
                    return new AddTileLayer();
                }
                if (keyCombos.CheckKeyComboStateWithPriorities("BACK")) {
                    return new RemoveActiveTileLayer();
                }
                if (keyCombos.CheckKeyComboStateWithPriorities("ESCAPE")) {
                    prevGameState = GameStateManager.CurrentState;
                    GameStateManager.TransitionState(GameStateManager.PauseMenu);
                }
            }

            if (keyCombos.CheckKeyComboStateWithPriorities("ALT_ENTER")) {
                return new SwitchFullScreen(Game1.Graphics);
            }

            if (GameStateManager.CurrentState == GameStateManager.PauseMenu && keyCombos.CheckKeyComboStateWithPriorities("ESCAPE")) {
                GameStateManager.TransitionState(prevGameState);
            }

            return null;
        }