コード例 #1
0
    private void SceneObjectPressed(RaycastHit2D hit, Vector2 hitPosition)
    {
        var fan = hit.transform.GetComponent <FanSelector>();

        if (fan != null)
        {
            if (!fan.selected)
            {
                fan.Select();
            }
            selectedFan = fan;
            dragOffset  = (Vector2)fan.transform.parent.position - hitPosition;
            grabbedFan  = fan;
        }
    }
コード例 #2
0
    private void SceneObjectClicked(RaycastHit2D hit)
    {
        Debug.Log($"Over Scene Object {hit.collider.name}");
        var fan = hit.transform.GetComponent <FanSelector>();

        if (fan != null)
        {
            if (fan.selected)
            {
                fan.Deselect();
                selectedFan = null;
            }
            else
            {
                DeselectAllFans();
                fan.Select();
                selectedFan = fan;
            }
        }
    }
コード例 #3
0
    private FanSelector PlaceFan(Vector2 pos)
    {
        if (availableFans <= fans.Count)
        {
            return(null);
        }

        DeselectAllFans();

        var obj = Instantiate(GameManager.Instance.fanPrefab, pos, Quaternion.identity);
        var fan = obj.GetComponentInChildren <FanSelector>();

        fans.Add(fan);
        if (!isTutorial)
        {
            fan.Select();
        }
        fan.level   = this;
        selectedFan = fan;
        UpdateFanCount();
        return(fan);
    }
コード例 #4
0
    private void Update()
    {
        if (GameManager.Instance.State != GameState.Running)
        {
            if (Input.GetMouseButtonDown(0))
            {
                var hit = Physics2D.Raycast(mainCamera.ScreenToWorldPoint(Input.mousePosition), Vector2.zero, 0, GameManager.Instance.FanLayerMask);

                // check if we clicked a scene object (fan/player/saw blade)
                if (hit)
                {
                    SceneObjectClicked(hit);
                    if (isTutorial)
                    {
                        tManager.Event("FanClicked");
                    }
                }
                // check if we want to place a fan.
                else if (!EventSystem.current.IsPointerOverGameObject())
                {
                    if (isTutorial && !tManager.canPlaceFan)
                    {
                        return;
                    }

                    PlaceFan(Camera.main.ScreenToWorldPoint(Input.mousePosition));
                    if (isTutorial)
                    {
                        tManager.Event("FanPlaced");
                    }
                }
            }

            // If we hold left click (move)
            if (Input.GetMouseButton(0))
            {
                // If we already grabbed a fan
                if (grabbedFan != null)
                {
                    grabbedFan.Move((Vector2)mainCamera.ScreenToWorldPoint(Input.mousePosition) + dragOffset);
                    if (isTutorial)
                    {
                        tManager.Event("FanMoved");
                    }
                }
                else
                {
                    var hit = Physics2D.Raycast(mainCamera.ScreenToWorldPoint(Input.mousePosition), Vector2.zero, 0, GameManager.Instance.FanLayerMask);
                    // check if we clicked a scene object (fan/player/saw blade)
                    if (hit)
                    {
                        if (currentPressTime >= GameManager.Instance.pressThreshold)
                        {
                            SceneObjectPressed(hit, mainCamera.ScreenToWorldPoint(Input.mousePosition));
                        }

                        currentPressTime += Time.deltaTime;
                    }
                }
            }

            // Reset press time
            if (Input.GetMouseButtonUp(0))
            {
                currentPressTime = 0;
                grabbedFan       = null;
            }
        }
    }
コード例 #5
0
 public void RemoveFan(FanSelector fan)
 {
     fans.Remove(fan);
     Destroy(fan.transform.parent.gameObject);
     UpdateFanCount();
 }
コード例 #6
0
 public void DeselectAllFans()
 {
     fans.ForEach(f => { f.Deselect(); });
     selectedFan = null;
 }