Пример #1
0
 public void OnLeftClick(IMouseTargetable target, Vector3 exactClickPosition)
 {
     if (target is IDamageable)
     {
         var targetObject = target as IDamageable;
         if (attack.CanAttack(targetObject))
         {
             Networking.instance.SendCommandToStartAttack(this, targetObject);
             statistics.numberOfAttacks--;
         }
     }
     if (target is Unit)
     {
         var targetUnit = target as Unit;
         if (targetUnit == this)
         {
             targetUnit.GetMyOwner().DeselectUnit();
         }
         else if (targetUnit.GetMyOwner().team == owner.team)
         {
             targetUnit.GetMyOwner().SelectUnit(targetUnit);
         }
     }
     else if (target is Tile)
     {
         MultiTile destination = (target as Tile).PositionRelatedToMouse(currentPosition.size, exactClickPosition);
         if (CanMoveTo(destination))
         {
             Networking.instance.SendCommandToMove(this, destination);
         }
     }
 }
Пример #2
0
 private void RefreshTarget(Ray ray)
 {
     if (Physics.Raycast(ray, out _hit))
     {
         if (_hit.collider != _colliderCache)
         {
             _colliderCache = _hit.collider;
             _targetCache   = _hit.collider.GetComponent <IMouseTargetable>();
             if (_targetCache != null)
             {
                 target   = _targetCache;
                 targetGO = _colliderCache.gameObject;
             }
             else
             {
                 target         = null;
                 _targetCache   = null;
                 _colliderCache = null;
                 targetGO       = null;
             }
         }
     }
     else
     {
         target = null;
     }
 }
 public void OnLeftClick(IMouseTargetable clickedObject, Vector3 exactClickPosition)
 {
     if (IsLegalTarget(clickedObject))
     {
         target = clickedObject;
         Activate();
     }
 }
 public override void OnCursorOver(IMouseTargetable target, Vector3 exactMousePosition)
 {
     if (target is Tile)
     {
         BattlescapeGraphics.ColouringTool.UncolourAllTiles();
         ColourCurrentTargets(target as Tile);
     }
 }
        public override bool IsLegalTarget(IMouseTargetable target)
        {
            if (target is Obstacle == false)
            {
                return(false);
            }
            Obstacle targetObstacle = target as Obstacle;

            return(IsInRange(targetObstacle));
        }
Пример #6
0
        public override bool IsLegalTarget(IMouseTargetable target)
        {
            if (target is Tile == false)
            {
                return(false);
            }
            Tile targetTile = target as Tile;

            return(IsInRange(targetTile) && targetTile.IsWalkable());
        }
        public override bool IsLegalTarget(IMouseTargetable target)
        {
            if ((target is Unit) == false)
            {
                return(false);
            }
            Unit targetUnit = target as Unit;

            return(IsInRange(targetUnit) && filter.FilterTeam(targetUnit.GetMyOwner().team) && filter.FilterPlayer(targetUnit.GetMyOwner()) && filter.FilterUnit(targetUnit));
        }
Пример #8
0
 public void OnLeftClick(IMouseTargetable target, Vector3 exactClickPosition)
 {
     if (target is Unit)
     {
         Unit targetUnit = target as Unit;
         if (targetUnit.CanBeSelected())
         {
             SelectUnit(targetUnit);
         }
     }
 }
 public virtual void OnCursorOver(IMouseTargetable target, Vector3 exactMousePosition)
 {
     if (IsLegalTarget(target))
     {
         Cursor.instance.OnLegalTargetHovered();
     }
     else
     {
         Cursor.instance.OnInvalidTargetHovered();
     }
 }
Пример #10
0
 public void OnRightClick(IMouseTargetable target)
 {
     if (target is Unit)
     {
         var targetUnit = target as Unit;
         if (targetUnit.IsAlive())
         {
             EnemyTooltipHandler.instance.SetOnFor(targetUnit);
         }
     }
 }
 public override bool IsLegalTarget(IMouseTargetable target)
 {
     if (base.IsLegalTarget(target))
     {
         var targetObstacle = target as Obstacle;
         return(targetObstacle.currentPosition.size.width == 1 && targetObstacle.currentPosition.size.height == 1);
     }
     else
     {
         return(false);
     }
 }
Пример #12
0
 public void OnCursorOver(IMouseTargetable target, Vector3 exactMousePosition)
 {
     if (target is Unit)
     {
         var targetUnit = target as Unit;
         if (targetUnit.CanBeSelected())
         {
             Cursor.instance.OnSelectableHovered();
         }
     }
     if (target is Tile)
     {
         Cursor.instance.SetToDefault();
     }
 }
Пример #13
0
        public void OnCursorOver(IMouseTargetable target, Vector3 exactMousePosition)
        {
            if (target is Unit)
            {
                var targetUnit = target as Unit;
                if (targetUnit.CanBeSelected())
                {
                    Cursor.instance.OnSelectableHovered();
                    return;
                }
            }
            if (target is IDamageable)
            {
                var targetDamagableObject = target as IDamageable;
                if (attack.CanAttack(targetDamagableObject))
                {
                    Cursor.instance.OnEnemyHovered(this, targetDamagableObject);
                    return;
                }
                else
                {
                    Cursor.instance.ShowInfoCursor();
                }
            }
            if (target is Tile)
            {
                var       targetTile = target as Tile;
                MultiTile position   = targetTile.PositionRelatedToMouse(currentPosition.size, exactMousePosition);

                if (CanMoveTo(position))
                {
                    BattlescapeGraphics.ColouringTool.ColourLegalTilesFor(this);
                    BattlescapeGraphics.ColouringTool.OnPositionHovered(position);
                    Cursor.instance.OnTileToMoveHovered(this, position);
                }
                else
                {
                    Cursor.instance.OnInvalidTargetHovered();
                }
            }
            else
            {
                Cursor.instance.OnInvalidTargetHovered();
            }
        }
Пример #14
0
 public override bool IsLegalTarget(IMouseTargetable target)
 {
     Debug.LogError("If you are asking this, most likely something went wrong?");
     return(true);
 }
Пример #15
0
 private void Update()
 {
     mouseTarget = mouseRaycaster.target;
 }
Пример #16
0
 public void OnRightClick(IMouseTargetable target)
 {
     OnFinish();
 }
Пример #17
0
 public abstract bool IsLegalTarget(IMouseTargetable target);
Пример #18
0
 void ResetCursor()
 {
     hoveredObject = null;
 }
Пример #19
0
        void DoMouse()
        {
            if (GameRound.instance.currentPlayer == null)
            {
                Cursor.instance.SetToDefault();
                return;
            }
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitInfo;

            if (Physics.Raycast(ray, out hitInfo, Mathf.Infinity))
            {
                IMouseTargetable newHoveredObject = hitInfo.collider.transform.GetComponentInParent <IMouseTargetable>();
                //just caching.
                if (newHoveredObject != hoveredObject)
                {
                    if (hoveredObject != null)
                    {
                        //Old hovered object existed so we  de-hover it with On Exit
                        hoveredObject.OnMouseHoverExit();
                    }

                    //Change hovered object to new
                    hoveredObject = newHoveredObject;
                    // New object is hovered, so play On Enter.
                    hoveredObject.OnMouseHoverEnter(hitInfo.point);
                    if (hoveredObject is IDamageable)
                    {
                        UIHitChanceInformation.instance.OnMouseHoverEnter(hoveredObject as IDamageable);
                    }
                    if (Global.instance.currentEntity != null)
                    {
                        Global.instance.currentEntity.OnCursorOver(hoveredObject, hitInfo.point);
                    }
                }

                if (Input.GetMouseButtonDown(0) && isInputBlocked == false)
                {
                    Global.instance.currentEntity.OnLeftClick(hoveredObject, hitInfo.point);
                }
            }
            else
            {
                if (GameRound.instance.currentPlayer.selectedUnit == null && Cursor.instance.isInfoByUI == false)
                {
                    Cursor.instance.SetToDefault();
                }
                else
                {
                    Cursor.instance.OnInvalidTargetHovered();
                }
                if (hoveredObject != null)
                {
                    //We HAD an object and now we don't so lets play On Exit.
                    hoveredObject.OnMouseHoverExit();
                    hoveredObject = null;
                }
            }

            if (Input.GetMouseButtonDown(1))
            {
                Global.instance.currentEntity.OnRightClick(hoveredObject);
                //This can be also null - its ok! Ability will cancel and other IActiveEntitys will do nothing ;)
            }
            if (Input.GetMouseButton(1) && (Input.GetAxis("Mouse X") != 0 || Input.GetAxis("Mouse Y") != 0))
            {
                CameraController.Instance.RotateCamera();
            }
        }