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); } } }
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)); }
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)); }
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(); } }
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); } }
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(); } }
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(); } }
public override bool IsLegalTarget(IMouseTargetable target) { Debug.LogError("If you are asking this, most likely something went wrong?"); return(true); }
private void Update() { mouseTarget = mouseRaycaster.target; }
public void OnRightClick(IMouseTargetable target) { OnFinish(); }
public abstract bool IsLegalTarget(IMouseTargetable target);
void ResetCursor() { hoveredObject = null; }
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(); } }