예제 #1
0
    public void ChangeCurrentAction()
    {
        audioSource.Play();
        MagnifyingGlass glass = FindObjectOfType <MagnifyingGlass>();

        if (glass)
        {
            glass.Disable();
        }
        im.ClearAction();
        im.SetCursor(cursorTexture);
        gm.ChangeAction(action);
    }
예제 #2
0
    void Update()
    {
        if (Input.GetMouseButtonDown(1))
        {
            MagnifyingGlass glass = FindObjectOfType <MagnifyingGlass>();
            if (glass)
            {
                glass.Disable();
            }
            ClearAction();
        }

        if (blockingLayer != null && blockingLayer.activeSelf)
        {
            return;
        }

        if (Input.GetKeyDown(KeyCode.LeftAlt))
        {
            MagnifyingGlass glass = FindObjectOfType <MagnifyingGlass>();
            if (!glass || !glass.IsActive())
            {
                foreach (SpriteOutline so in FindObjectsOfType <SpriteOutline>())
                {
                    so.EnableOutline();
                }
            }
        }
        else if (Input.GetKeyUp(KeyCode.LeftAlt))
        {
            foreach (SpriteOutline so in FindObjectsOfType <SpriteOutline>())
            {
                so.DisableOutline();
            }
        }

        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit2D hit = Physics2D.Raycast(new Vector2(
                                                     mainCamera.ScreenToWorldPoint(Input.mousePosition).x,
                                                     mainCamera.ScreenToWorldPoint(Input.mousePosition).y),
                                                 Vector2.zero, 100f, clickableMask, -Mathf.Infinity, Mathf.Infinity);

            if (hit)
            {
                Clickable clickable = hit.collider.GetComponent <Clickable>();

                if (clickable && clickable.enabled)
                {
                    Character c = hit.collider.GetComponent <Character>();
                    if (c && c.GetType() != typeof(Doggo))
                    {
                        ClearCurrentOutline();
                        if (c.OnClick(gm.GetSelectedAction()))
                        {
                            currentActionInfo.source = c;
                            currentActionInfo.target = null;
                            SetCurrentOutline();
                        }
                    }
                    else
                    {
                        if (currentActionInfo.source && !currentActionInfo.target)
                        {
                            currentActionInfo.target = clickable;
                        }
                    }
                }
            }

            if (currentActionInfo.source != null && currentActionInfo.target != null)
            {
                if (currentActionInfo.source.CanInteractWith(gm.GetSelectedAction(), currentActionInfo.target))
                {
                    currentActionInfo.source.Interact(gm.GetSelectedAction(), currentActionInfo.target);
                }
                else
                {
                    currentActionInfo.source.GetComponent <AudioSource>().clip = currentActionInfo.source.angryTrack;
                    currentActionInfo.source.GetComponent <AudioSource>().Play();
                }

                ClearAction();
            }
        }
    }