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); }); }
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)); } } } }
// 마우스 동작을 입력받는 코루틴 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); } }
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(); }
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(); } } }