Exemple #1
0
    private void TouchStart(Define.TouchEvent evt)
    {
        if (evt != Define.TouchEvent.Press)
        {
            return;
        }

        IsActive   = false;
        StartTouch = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    }
Exemple #2
0
    private void TouchDrag(Define.TouchEvent evt)
    {
        if (evt != Define.TouchEvent.Drag || _camera == null)
        {
            return;
        }

        _currMode = Define.CameraMode.Drag;
        Vector3 dir = StartTouch - Camera.main.ScreenToWorldPoint(Input.mousePosition);

        _camera.transform.position += dir;
    }
Exemple #3
0
    private void TouchZoom(Define.TouchEvent evt)
    {
        if (evt != Define.TouchEvent.Zoom || _camera == null)
        {
            return;
        }

        IsActive = true;

        Touch touchZero = Input.GetTouch(0);
        Touch touchOne  = Input.GetTouch(1);

        Vector2 zeroPrevPos = touchZero.position - touchZero.deltaPosition;
        Vector2 onePrevPos  = touchOne.position - touchOne.deltaPosition;

        float prevM = (zeroPrevPos - onePrevPos).magnitude;
        float m     = (touchZero.position - touchOne.position).magnitude;

        float difference = m - prevM;

        Zoom(difference * 0.01f);
    }
Exemple #4
0
    private void OnTouch(Define.TouchEvent evt)
    {
        if (evt != Define.TouchEvent.End)
        {
            return;
        }

        if (!GameMng.Camera.IsActive && !EventSystem.current.IsPointerOverGameObject())
        {
            // 입력이 들어왔슴으로 기존에 있던 Task는 모두 지워라.
            TemporaryStorage.Clear();

            Vector2 pos    = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            Tile    curr   = FindCurrTile();
            Tile    target = FindTargetTile(pos);

            if (target != null && curr != null && !(curr == target) && (target.Visible || target.Explored))
            {
                TileType type = target.TILETYPE;

                if (target.TileTypeStack.Count > 0)
                {
                    if (target.TILETYPE != TileType.Monster)
                    {
                        type = target.TileTypeStack.Pop();
                    }
                }

                if (IsThrow)
                {
                    GameMng.Task.CurrentExecute(new TaskThrow(target, gameObject, _map, SelectedSlot));
                    IsThrow      = false;
                    SelectedSlot = null;
                    return;
                }
                if (IsShoot)
                {
                    Vector2Int start = new Vector2Int((int)transform.position.x, (int)transform.position.y);
                    target = Helper.RayCastWithBresenham(start, target.Position, _map);

                    if (target == FindCurrTile())
                    {
                        UIMng.Instance.CallEvent(UIList.HUD, "TextBox", "당신은 스스로를 겨냥할 수 없다.");
                        return;
                    }

                    GameMng.Task.CurrentExecute(new TaskShoot(target, gameObject, _map, SelectedSlot));
                    IsShoot      = false;
                    SelectedSlot = null;
                    return;
                }
                if (type == TileType.Floor || type == TileType.FrontDoor || type == TileType.SideDoor)
                {
                    Move(curr, target);
                }
                if (type == TileType.Monster)
                {
                    Attack(curr, target);
                }
                if (type == TileType.Item)
                {
                    Item(curr, target);
                }
                if (type == TileType.DownStairway || type == TileType.UpStairway)
                {
                    Translate(curr, target);
                }
            }
        }
    }