예제 #1
0
    public void AddOption(RPGGameEvent option)
    {
        int s = RPGGameEventUtils.MenuSortOrder(option);

        if (!MenuOptions.ContainsKey(s))
        {
            MenuOptions.Add(s, option);
        }
    }
예제 #2
0
    public static void AddOption(int entityID, RPGGameEvent option)
    {
        var menu = GameBehavior.thisGame.EntityManager.GetComponent <MenuComponent>(entityID);

        if (menu == null)
        {
            return;
        }

        int s = RPGGameEventUtils.MenuSortOrder(option);

        if (!menu.MenuOptions.ContainsKey(s))
        {
            menu.MenuOptions.Add(s, option);
        }
    }
예제 #3
0
    private void OnMouseUpdate(GameEvent e)
    {
        var data = (InputMouseBehaviour.MouseData)e.EventData;

        var menu = this.EntityManager.GetComponent <MenuComponent>(data.EntityID);

        if (menu == null)
        {
            return;
        }

        // Start by assuming nothing was selected
        menu.MouseButtonPressed = false;
        menu.SelectedOption     = RPGGameEvent.None;

        if (data.HitMenu)
        {
            menu.MouseButtonPressed = data.MouseButton0;
            menu.SelectedOption     = RPGGameEventUtils.GetEnumFromString(data.HitMenuCollider.name);
        }
        else
        {
            menu.Distance      = data.HitDistance;
            menu.EntityID_Item = data.HitEntityID;

            // If item changed then clear options
            if (menu.EntityID_Item != data.HitEntityID)
            {
                menu.ClearOptions();
            }
        }

        if (data.HitMenu && data.MouseButton0Up)
        {
            var selectedOption = menu.SelectedOption;
            var optionData     = new MenuOptionSelected()
            {
                ActorID = data.EntityID, ItemID = menu.EntityID_Item
            };

            menu.ClearAll();

            this.EventManager.QueueEvent(selectedOption, optionData);
        }
    }
예제 #4
0
    private void SetMenuOptions(MenuComponent menu)
    {
        //menu.RemoveOption(RPGGameEvent.Menu_None);
        //if (menu.MenuOptions.Count == 0 && menu.Distance <= MenuSystem.DistanceItemActionable && menu.EntityID_Item > 0) { menu.AddOption(RPGGameEvent.Menu_None); }

        if (RPGGameEventUtils.MenuOptionIsDisabledType(menu.SelectedOption))
        {
            menu.SelectedOption = RPGGameEvent.None;
        }

        foreach (Transform child in menu.MenuGO.transform)
        {
            child.gameObject.SetActive(menu.OptionIsActive((RPGGameEvent)Enum.Parse(typeof(RPGGameEvent), child.name, true)));

            float transparency = menu.OptionTransparencyDefault;
            if (child.name != menu.SelectedOption.ToString())
            {
                child.transform.localEulerAngles = new Vector3(child.transform.localEulerAngles.x, menu.OptionAdditionalRotationY, child.transform.localEulerAngles.z);
            }
            else
            {
                if (menu.MouseButtonPressed)
                {
                    child.transform.Rotate(0, child.transform.rotation.y + menu.OptionRotationRate, 0);
                }
                else
                {
                    child.transform.localEulerAngles = new Vector3(child.transform.localEulerAngles.x, menu.OptionAdditionalRotationY, child.transform.localEulerAngles.z);
                }

                transparency = menu.MouseButtonPressed ? menu.OptionTransparencySelected : menu.OptionTransparencyMouseOver;
            }

            var r = menu.MenuGO.transform.FindChild(child.name).GetComponent <Renderer>() as Renderer;
            if (r != null)
            {
                r.material.SetColor("_Color", new Color(r.material.color.r, r.material.color.g, r.material.color.b, transparency));
            }
        }
    }
예제 #5
0
 public void RemoveOption(RPGGameEvent option)
 {
     MenuOptions.Remove(RPGGameEventUtils.MenuSortOrder(option));
 }
예제 #6
0
 public bool OptionIsActive(RPGGameEvent option)
 {
     return(MenuOptions.ContainsKey(RPGGameEventUtils.MenuSortOrder(option)));
 }