예제 #1
0
        // --------------------------------------------------------------------------------------------
        private void OnPointerUp(object sender, EventSystemEventArgs e)
        {
            bool             upOnUnitView     = false;
            PointerEventData pointerEventData = e.eventData as PointerEventData;

            if (Time.time - _potentialSelectedUnitTime < SelectUnitTimeLimit && _potentialSelectedUnitView != null)
            {
                // if we have no potential selected unit yet, try to find one
                Ray ray = _game.gameCamera.ScreenPointToRay(pointerEventData.position);
                if (Physics.Raycast(ray, out RaycastHit hit))
                {
                    // if pointer up is called and we hit same potential selected unit, then we've selected that unit!
                    UnitView view = hit.collider.GetComponentInParent <UnitView>();
                    if (view != null && view == _potentialSelectedUnitView)
                    {
                        foreach (IListener listener in _listeners)
                        {
                            listener.OnSelectedUnitView(view);
                        }
                        upOnUnitView = true;
                    }
                }
            }

            if (!upOnUnitView)
            {
                foreach (IListener listener in _listeners)
                {
                    listener.OnReleasedBoard(pointerEventData.position);
                }
            }

            _potentialSelectedUnitView = null;
        }
예제 #2
0
        // --------------------------------------------------------------------------------------------
        private void OnPointerDown(object sender, EventSystemEventArgs e)
        {
            PointerEventData pointerEventData = e.eventData as PointerEventData;
            Ray ray = _game.gameCamera.ScreenPointToRay(pointerEventData.position);

            if (_potentialSelectedUnitView == null)
            {
                // if we have no potential selected unit yet, try to find one
                if (Physics.Raycast(ray, out RaycastHit unitViewHit))
                {
                    _potentialSelectedUnitView = unitViewHit.collider.GetComponentInParent <UnitView>();

                    if (_potentialSelectedUnitView) // remember, GameObjects can be cast as bools (false if destroyed or null)
                    {
                        _potentialSelectedUnitTime = Time.time;

                        foreach (IListener listener in _listeners)
                        {
                            listener.OnPointerDownOverUnitView(_potentialSelectedUnitView);
                        }
                    }
                }

                if (_potentialSelectedUnitView == null)
                {
                    // if the potential slected unit view is still null, lets raycast to our plane
                    _previousDragPoint = pointerEventData.position;
                }
            }

            // see if we hit a board tile view
            if (Physics.Raycast(ray, out RaycastHit hit))
            {
                BoardTileView boardTileView = hit.collider.GetComponentInParent <BoardTileView>();
                if (boardTileView != null)
                {
                    foreach (IListener listener in _listeners)
                    {
                        listener.OnPointerDownOverBoardTileView(boardTileView);
                    }
                }
            }
        }
예제 #3
0
        // --------------------------------------------------------------------------------------------
        private void OnPointerDrag(object sender, EventSystemEventArgs e)
        {
            PointerEventData pointerEventData = e.eventData as PointerEventData;
            Vector2          dragDelta        = pointerEventData.position - _previousDragPoint;

            if (_potentialSelectedUnitView != null)
            {
                foreach (IListener listener in _listeners)
                {
                    listener.OnDragFromUnitView(_potentialSelectedUnitView, _previousDragPoint, dragDelta);
                }
            }
            else
            {
                foreach (IListener listener in _listeners)
                {
                    listener.OnDragBoard(_previousDragPoint, dragDelta);
                }
            }

            _previousDragPoint = pointerEventData.position;
        }
		// Item dragged over dropzone
		public void dragOver(object sender, EventSystemEventArgs e)
		{
			DragEventArgs args = e.data as DragEventArgs;
			if (args != null)
			{
				args.Handled = true;
				args.Effects = DragDropEffects.Copy;
			}
		}
		// Item Dropped onto dropzone
		public void dataDropped(object sender, EventSystemEventArgs e)
		{
			DragEventArgs args = e.data as DragEventArgs;
			if (args != null)
			{
				// Put paths into array
				string[] temp = null;
				if (args.Data.GetDataPresent(DataFormats.FileDrop))
					temp = ((string[]) args.Data.GetData(DataFormats.FileDrop));

				foreach (string s in temp)
				{
					// is directory
					if (FileFolderUtil.IsPathADirectory(s) == true)
					{
						items.Add(new ShortcutItem
						{
							displayName = FileFolderUtil.GetDirectoryName(s),
							path = s,
							isFile = false,
							image = ImageUtil.LoadBitmapImageFromResources("Resources/folder_32.png")
						});
					}
					// is file
					else if (File.Exists(s) == true)
					{						
						items.Add(new ShortcutItem
						{
							displayName = Path.GetFileNameWithoutExtension(s),
							path = s,
							isFile = true,
							image = MainData.GetInstance().GetFileImage(s)
						});
					}
				}
			}
		}
예제 #6
0
 // --------------------------------------------------------------------------------------------
 private void OnClicked(object sender, EventSystemEventArgs e)
 {
     _onClicked?.Invoke();
 }
예제 #7
0
 // --------------------------------------------------------------------------------------------
 private void OnPointerUp(object sender, EventSystemEventArgs e)
 {
     UnPress();
 }
예제 #8
0
 // --------------------------------------------------------------------------------------------
 private void OnPointerDown(object sender, EventSystemEventArgs e)
 {
     Press();
 }
예제 #9
0
 // --------------------------------------------------------------------------------------------
 private void OnPointerExit(object sender, EventSystemEventArgs e)
 {
     UnHighlight();
 }