private void ClickUnit(GameClickEventData clickEventData)
    {
        var input = clickEventData.input;

        if (!input.isUIInteraction && !input.isDrag && !clickEventData.isUsed)
        {
            var worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            var mouse2D  = new Vector2(worldPos.x, worldPos.y);

            //var ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            var results = Physics2D.RaycastAll(mouse2D, Vector2.zero, 100, mapUnitMask);

            List <MapUnit> units = new List <MapUnit>();

            foreach (var hit in results)
            {
                if (hit.collider != null && hit.collider.transform.parent != null)
                {
                    var unit = hit.collider.transform.parent.GetComponent <MapUnit>();
                    if (unit != null)
                    {
                        units.Add(unit);
                    }
                }
            }

            foreach (var unit in units.OrderByDescending(unit => unit is MapShip))
            {
                unit.OnClickEvent();
                break;
            }
        }
    }
    private void TouchEnd(TouchInput input)
    {
        var clickEventData = new GameClickEventData(input);

        ClickTile(clickEventData);
        ClickUnit(clickEventData);

        cameraController.OnMouseDragEndEvent(input);
    }
Beispiel #3
0
    private void OnGameTileClickedEvent(GameTile tile, GameClickEventData clickEventData)
    {
        if (currentCommand == UnitCommandType.Move && selectedUnit != null && selectedUnit is MapMobileUnit)
        {
            var mobileUnit = selectedUnit as MapMobileUnit;

            mobileUnit.SetMovePosition(tile.position);
            clickEventData.isUsed = true;
        }

        currentCommand = UnitCommandType.None;
    }
    private void ClickTile(GameClickEventData clickEventData)
    {
        var input = clickEventData.input;

        if (!input.isUIInteraction && !input.isDrag && !clickEventData.isUsed)
        {
            var worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            var tilePos  = Pathfinder.tilemap.WorldToCell(worldPos);

            var gameTile = Pathfinder.GetGameTile(tilePos);

            if (gameTile != null)
            {
                if (OnGameTileClickEvent != null)
                {
                    OnGameTileClickEvent(gameTile, clickEventData);
                }
            }
        }
    }