示例#1
0
    void AddListener(ClickReceiver cr, MiningPoint point)
    {
        cr.MouseClick2D.RemoveAllListeners();
        cr.MouseClick2D.AddListener((v) => {
            if (InteractionController.Instance.Fighting)
            {
                return;
            }

            var items       = point.Drops.GetItems(false);
            string itemText = "";
            foreach (var item in items)
            {
                itemText += $"A {item.GetName()}\n";
                PlayerInventory.Add(item);
            }
            if (items.Count == 0)
            {
                PopUp.SetPopUp("The mining point breaks apart and you get nothing :(", new[] { "Shucks!" }, new Action[] { () => { } });
            }
            else
            {
                PopUp.SetPopUp("You got: " + itemText, new[] { "Awesome!" }, new Action[] { () => { } });
            }
            Pool.Return(cr.gameObject);
        });
    }
示例#2
0
    public void Activate()
    {
        if (mode == Modes.lockdown)
        {
            PlaySound(Modes.lockdown);
        }
        else if (mode == Modes.resting)
        {
            SetMode(Modes.going);
            timeCounter = 0;

            if (lockdownTarget != null)
            {
                ClickReceiver clickReceiver = lockdownTarget.GetComponent <ClickReceiver>();
                if (clickReceiver == null)
                {
                    Debug.LogError("lockdownTarget has no clickReceiver. target=" + lockdownTarget);
                }
                else
                {
                    StartCoroutine(clickReceiver.LockdownForDuration(lockdownDuration));
                }
            }
        }
    }
示例#3
0
    // 마우스 동작을 입력받는 코루틴
    IEnumerator ClickEventCoroutine()
    {
        while (true)
        {
            if (Input.GetMouseButtonUp(0))
            {
                // UI클릭을 block 해준다. ( ui에 이벤트가 발생하면 true를 리턴함)
                if (EventSystem.current.IsPointerOverGameObject() == false)
                {
                    RaycastHit hitInfo;

                    //클릭 정보를 받아옴 (hitInfo)
                    if (ClickReceiver.GetClickedObject(out hitInfo))
                    {
                        // Enemy 오브젝트 클릭
                        if (hitInfo.transform.gameObject.tag == "Enemy")
                        {
                            if (DEBUG_MODE)
                            {
                                Debug.Log("EnemyClicked");
                            }
                            TargetList.TargetEnemy(hitInfo.transform.gameObject);
                            //selectedTarget = ;
                        }
                        //지면클릭
                        else
                        {
                            hitPosition = new Vector3(hitInfo.point.x, 0f, hitInfo.point.z);
                            int layer = hitInfo.transform.gameObject.layer;

                            // UI일 시 종료
                            if (layer == UI_LAYER)
                            {
                                yield return(null);
                            }

                            // 회전 및 목적지 설정
                            MoveManager.LookTarget(hitPosition);
                            MoveManager.TargetVector = new Vector3(hitInfo.point.x, 0f, hitInfo.point.z);
                        }
                    }
                }
            }
            yield return(null);
        }
    }
示例#4
0
    private void ActivateClosestClickReceiver(ClickTransmitter clickTransmitter)
    {
        //this handles two cases:
        //activate all clickReceivers with matching frequency, or
        //if frequency is zero, activate the closest clickReceiver.
        ClickReceiver closestReceiver = null;
        float         minDistance     = 0;

        foreach (ClickReceiver clickReceiver in FindObjectsOfType <ClickReceiver>())
        {
            float newDistance = Vector3.Distance(clickTransmitter.gameObject.transform.position, clickReceiver.startPosition);
            if (newDistance < minDistance || closestReceiver == null)
            {
                closestReceiver = clickReceiver;
                minDistance     = newDistance;
            }
        }
        closestReceiver.Activate();
    }
示例#5
0
 private void HitClickTransmitter(ClickTransmitter clickTransmitter)
 {
     //called when clickTransmitter has been activated.
     if (clickTransmitter.FindsClosestReceiver())
     {
         ActivateClosestClickReceiver(clickTransmitter);
     }
     else
     {
         foreach (GameObject go in clickTransmitter.clickReceiverGameObjects)
         {
             ClickReceiver clickReceiver = go.GetComponent <ClickReceiver>();
             if (clickReceiver == null)
             {
                 Debug.LogError("an item in clickReceiverGameObjects has no clickReceiver. " + clickTransmitter.gameObject);
                 continue;
             }
             clickReceiver.Activate();
         }
     }
 }