public bool Equals(MousePosition other)
 {
     return Position.Equals(other.Position);
 }
        /// <summary>
        /// �E�N���b�N�ƃ}�E�X�ړ�
        /// </summary>
        /// <param name="parameter"> </param>
        public void MouseMoveWithRightButtonDown(MousePosition parameter)
        {
            var p = parameter.GridPoint;

            if (MapSelect.SelectedXEnd != p.X || MapSelect.SelectedYEnd != p.Y)
            {
                MapSelect.SetEnd(p.X, p.Y);

                //MapControl.Rendering();
            }
        }
        /// <summary>
        /// �E�N���b�N�_�E��
        /// �X�|�C�g�����s��
        /// </summary>
        /// <param name="parameter"> </param>
        public void MouseRightButtonDown(MousePosition parameter)
        {
            var p = parameter.GridPoint;

            var mapChip = CurrentMap.MapChipModel.Get(p);
            var objChip = CurrentMap.ObjectChipModel.Get(p);

            if (!objChip.IsEmpty) //ObjectChip�����݂���ꍇ
            {
                //�X�|�C�g����̑O��DrawState��ύX����
                //�I�u�W�F�N�g�`�b�v�̃X�|�C�g����
                PalletViewModelManager.SpoilChip(DrawState.ObjChip, objChip);
            }
            else if (mapChip.ID != 0) //ObjectChip�����MapChip�����݂���ꍇ
            {
                //�X�|�C�g����̑O��DrawState��ύX����
                //�}�b�v�`�b�v�̃X�|�C�g����
                PalletViewModelManager.SpoilChip(DrawState.MapChip, mapChip);
            }

            //MapSelect�̍X�V
            MapSelect.Set(p.X, p.Y);

            //MapControl.Rendering();
        }
        /// <summary>
        /// ���N���b�N�ƃ}�E�X�ړ�
        /// </summary>
        /// <param name="position"></param>
        public void MouseMoveWithLeftButtonDown(MousePosition position)
        {
            var p = position.GridPoint;

            if (PalletViewModelManager.CanDraw(CurrentMap, p))
            {
                var command = new MapCommand(p, CurrentMap, MapSelect);
                _commandPool.Add(command);

                //Draw����Model��X�V
                PalletViewModelManager.Draw(CurrentMap, p, MapSelect);

                //MapControl.Rendering();
            }
        }
        /// <summary>
        /// ���N���b�N�A�b�v
        /// </summary>
        /// <param name="position"></param>
        public void MouseLeftButtonUp(MousePosition position)
        {
            if (_commandPool.FirstOrDefault() == null) return;

            var command = new MapCommand(_commandPool);
            CurrentMap.AddHistory(command);
            _commandPool.Clear();

            CommandCanExecuteChanged();
        }
        /// <summary>
        /// ���N���b�N�_�E��
        /// </summary>
        /// <param name="position"></param>
        public void MouseLeftButtonDown(MousePosition position)
        {
            var p = position.GridPoint;

            if (PalletViewModelManager.CanDraw(CurrentMap, p))
            {
                //�ꎞ�R�}���h�v�[���ɃR�}���h��ۑ�
                var command = new MapCommand(p, CurrentMap, MapSelect);
                _commandPool.Add(command);

                //Draw����Model��X�V
                PalletViewModelManager.Draw(CurrentMap, p, MapSelect);

                CommandCanExecuteChanged();
            }
        }
 public void MouseGridPositionMoved(MousePosition position)
 {
     if (this.CurrentMap != null)
     {
         _model.CurrentMousePosition = position;
     }
 }
        public void MouseDoubleClick(MousePosition position)
        {
            var p = position.GridPoint;

            PalletViewModelManager.DoubleClick(
                CurrentMap, p,
                chip =>
                Messenger.Raise(new TransitionMessage(new ObjectChipViewModel((ObjectChip)chip), "TransitionObjectChip")));
        }