Esempio n. 1
0
 public void Prime(MenuItemScript menuItem)
 {
     if (textName != null)
     {
         textName.text = menuItem.ItemText;
     }
     if (sprite != null)
     {
         sprite.sprite = menuItem.ItemImage;
     }
 }
Esempio n. 2
0
    /// <summary>
    /// 指定した方向を見たときに一番近い項目IDを得る
    /// </summary>
    /// <param name="origin">現在の項目</param>
    /// <param name="items">対象項目群</param>
    /// <param name="direction">方向</param>
    /// <returns></returns>
    private int FindMinDistanceMenuItem(MenuItemScript origin, MenuItemScript[] items, Direction direction)
    {
        int   index       = -1;
        float minDistance = float.PositiveInfinity;

        foreach (var item in items)
        {
            Vector3 position = item.transform.position;
            Vector3 diff     = position - origin.transform.position;
            switch (direction)
            {
            case Direction.Up:
                if (diff.y <= 0.0f)
                {
                    continue;
                }
                break;

            case Direction.Down:
                if (diff.y >= 0.0f)
                {
                    continue;
                }
                break;

            case Direction.Left:
                if (diff.x >= 0.0f)
                {
                    continue;
                }
                break;

            case Direction.Right:
                if (diff.x <= 0.0f)
                {
                    continue;
                }
                break;
            }

            float distance = diff.magnitude;
            if (distance < minDistance)
            {
                minDistance = distance;
                index       = item.Index;
            }
        }
        return(index);
    }
Esempio n. 3
0
    void MenuOpen()
    {
        normalisedMousePosition = new Vector2(Input.mousePosition.x - Screen.width / 2, Input.mousePosition.y - Screen.height / 2);
        currentAngle            = Mathf.Atan2(normalisedMousePosition.y, normalisedMousePosition.x) * Mathf.Rad2Deg;
        //dividing the screen into 8ths

        currentAngle = (currentAngle + 360) % 360;

        selection = (int)currentAngle / 45;

        if (selection != previousSelection)
        {
            previousMenuItemSc = menuItems[previousSelection].GetComponent <MenuItemScript>();
            previousMenuItemSc.Deselect();
            previousSelection = selection;

            menuItemSc = menuItems[selection].GetComponent <MenuItemScript>();
            menuItemSc.Select();
        }
    }
Esempio n. 4
0
    // Update is called once per frame
    void Update()
    {
        normalisedMousePosition = new Vector2(Input.mousePosition.x - Screen.width / 2, Input.mousePosition.y - Screen.height / 2);
        currentAngle            = Mathf.Atan2(normalisedMousePosition.y, normalisedMousePosition.x) * Mathf.Rad2Deg;

        currentAngle = (currentAngle + 360) % 360;

        selection = (int)currentAngle / 45;

        if (selection != previousSelection)
        {
            previousmenuItemSc = menuItems[selection].GetComponent <MenuItemScript>();
            previousmenuItemSc.Deselect();
            previousmenuItemSc = selection;

            menuItemSc = menuItems[selection].GetComponent <MenuItemScript>();
            menuItemSc.Select();
        }



        Debug.Log(selection);
    }
Esempio n. 5
0
 // Start is called before the first frame update
 void Start()
 {
     fireScript  = fire.GetComponentInChildren <MenuItemScript>();
     waterScript = water.GetComponentInChildren <MenuItemScript>();
     plantScript = plant.GetComponentInChildren <MenuItemScript>();
 }
Esempio n. 6
0
    protected override void Update()
    {
        if (SceneChangeSingleton.instance.IsFading)
        {
            return;
        }

        if (IsPopChildMenu)
        {
            if (ChildMenu != null)
            {
                // 子メニューが開いてるため、このメニューは操作を受け付けない
                return;
            }

            ReturnChildMenu();
        }

        Direction direction = Direction.None;

        if (Input.GetButton("CursorRight"))
        {
            direction = Direction.Right;
        }
        else if (Input.GetButton("CursorLeft"))
        {
            direction = Direction.Left;
        }
        else if (Input.GetButton("CursorUp"))
        {
            direction = Direction.Up;
        }
        else if (Input.GetButton("CursorDown"))
        {
            direction = Direction.Down;
        }

        if (direction != Direction.None)
        {
            if (!IsOldButton)
            {
                // 押した瞬間
                switch (direction)
                {
                case Direction.Up:
                    CurrentCursorIndex = IndexToItem(CurrentCursorIndex).UpItemIndex;
                    break;

                case Direction.Down:
                    CurrentCursorIndex = IndexToItem(CurrentCursorIndex).DownItemIndex;
                    break;

                case Direction.Left:
                    CurrentCursorIndex = IndexToItem(CurrentCursorIndex).LeftItemIndex;
                    break;

                case Direction.Right:
                    CurrentCursorIndex = IndexToItem(CurrentCursorIndex).RightItemIndex;
                    break;
                }
                IsOldButton = true;
            }
        }
        else
        {
            IsOldButton = false;
        }

        //------ 項目選択処理 ------
        bool isMenuDecision = false;         // メニュー項目を決定

        // マウス座標の位置にあるゲームオブジェクトを得る
        Ray     ray;
        Vector3 mousePosition = Input.mousePosition;

        if (menuCamera != null)
        {
            ray = menuCamera.ScreenPointToRay(mousePosition);
        }
        else
        {
            ray = Camera.main.ScreenPointToRay(mousePosition);
        }

        Debug.DrawRay(ray.origin, ray.direction * 1000.0f);

        RaycastHit     hit;
        MenuItemScript menuItem   = null;
        bool           isMenuitem = false;

        // マウスがメニューの項目上にあるかどうか
        if (Physics.Raycast(ray, out hit, 1000.0f, 1 << Layers.Menu.layer))
        {
            // MenuItemScriptがアタッチされているのでメニュー項目
            menuItem   = hit.transform.GetComponent <MenuItemScript>();
            isMenuitem = true;
            if (mousePosition != oldMousePosition && menuItem != null)
            {
                CurrentCursorIndex = menuItem.Index;
            }
        }
        oldMousePosition = mousePosition;

        if (!isMenuDecision && (Input.GetKeyDown(KeyCode.Z) || Input.GetKeyUp(KeyCode.Return)))
        {
            isMenuDecision = true;
        }

        if (Input.GetButtonDown("Select") && isMenuitem)
        {
            isMenuDecision = true;
        }

        if (isMenuDecision)
        {
            if (CurrentCursorItem.ChildMenuPrefab != null)
            {
                PopChildMenu();
            }
            else if (MenuSelected != null)
            {
                if (!MenuSelected(CurrentCursorName))
                {
                    Destroy(gameObject);
                }
            }
        }

        if (Input.GetButtonDown(CanselMessage))
        {
            if (transform.parent == null)
            {
                if (!MenuSelected(CanselMessage))
                {
                    Destroy(gameObject);
                }
            }
            else
            {
                if (!MenuSelected(ReturnMessage))
                {
                    Destroy(gameObject);
                }
            }
        }
    }
Esempio n. 7
0
    /// <summary>
    /// 指定の方向の移動先項目IDを調べる
    /// </summary>
    /// <param name="origin">現在の項目</param>
    /// <param name="items">対象項目群</param>
    /// <param name="direction">方向</param>
    /// <returns></returns>
    private int FindTargetItem(MenuItemScript origin, MenuItemScript[] items, Direction direction)
    {
        int index = FindMinDistanceMenuItem(origin, items, direction);

        return(index);
    }