Пример #1
0
        private static async Task OnTick()
        {
            try
            {
                if (Observer.CurrentMenu == InteractionMenu)
                {
                    (WalkingStyleItem as MenuItemHorNamedSelector).state = walkingStyleIndex;
                    (WalkingStyleItem as MenuItemHorNamedSelector).overrideDetailWith = walkingStyles[walkingStyleIndex].Replace("move_m@", "").Replace("move_f@", "").Replace("@", " ").Replace("_", " ").ToTitleCase();

                    ItemsFiltered = ItemsAll.Where(m => m.Item3.Invoke()).OrderBy(m => m.Item2.Title).OrderByDescending(m => m.Item1).Select(m => m.Item2).ToList();
                    if (!ItemsFiltered.SequenceEqual(InteractionMenu.menuItems) || IsDirty)
                    {
                        if (ItemsFiltered.Contains(InteractionMenu.SelectedItem))
                        {
                            int newSelectedIndex = ItemsFiltered.IndexOf(InteractionMenu.SelectedItem);
                            InteractionMenu.menuItems     = ItemsFiltered;
                            InteractionMenu.SelectedIndex = newSelectedIndex;
                        }
                        else if (InteractionMenu.SelectedIndex.IsBetween(0, ItemsFiltered.Count - 1))
                        {
                            InteractionMenu.menuItems     = ItemsFiltered;
                            InteractionMenu.SelectedIndex = InteractionMenu.SelectedIndex; // Simply refreshes selection
                        }
                        else
                        {
                            InteractionMenu.menuItems     = ItemsFiltered;
                            InteractionMenu.SelectedIndex = 0;
                        }

                        IsDirty = false;
                    }
                }

                Observer.Tick();

                if (ControlHelper.IsControlJustPressed(Control.InteractionMenu))
                {
                    if (Observer.CurrentMenu == null)
                    {
                        Observer.OpenMenu(InteractionMenu);
                    }
                    else
                    {
                        Observer.CloseMenu(true);
                    }
                    MenuController.PlaySound("NAV_UP_DOWN");
                }
            }
            catch (Exception ex)
            {
                Log.Error($"[INTERACTIONLISTMENU] Exception in OnTick; {ex.Message}");
            }

            await Task.FromResult(0);
        }
Пример #2
0
 public void toggleMenuState()
 {
     if (Input.IsControlJustPressed(Control.InteractionMenu))
     {
         if (Observer.CurrentMenu == null)
         {
             Observer.OpenMenu(InteractionMenu);
         }
         else
         {
             Observer.CloseMenu(true);
         }
         MenuController.PlaySound("NAV_UP_DOWN");
     }
 }
        public CharacterEditorMenu()
        {
            headerTitle = "Character designer";
            statusTitle = "";

            //menuItems.Add( new GenderSelector( this ) );
            menuItems.Add(new ModelSelector(this));
            menuItems.Add(new CustomizeButton(this));
            menuItems.Add(new SaveButton(this));
            menuItems.Add(new ExitButton(this));

            Observer = new MenuObserver();
            Observer.OpenMenu(this);

            // Remove default ESC, Backspace & RMB behaviour
            Observer.Controller.controlBinds.Remove(Control.PhoneCancel);

            Client.ActiveInstance.RegisterTickHandler(Update);
        }
        public CharacterEditorMenu(bool isClothingStore = false)
        {
            headerTitle     = "Character designer";
            statusTitle     = "";
            IsClothingStore = isClothingStore;
            Editor          = new CharacterEditorCamera(!isClothingStore);

            //menuItems.Add( new GenderSelector( this ) );
            if (!IsClothingStore)
            {
                menuItems.Add(new ModelSelector(this));
            }
            menuItems.Add(new CustomizeButton(this, isClothingStore));
            menuItems.Add(new SaveButton(this));
            if (IsClothingStore)
            {
                menuItems.Add(new ExitButton(this));
            }

            Observer = new MenuObserver();
            Observer.OpenMenu(this);

            // Remove default ESC, Backspace & RMB behaviour
            Observer.Controller.controlBinds.Remove(Control.PhoneCancel);

            Client.Instance.RegisterTickHandler(Update);
            Client.Instance.RegisterEventHandler("Skin.TestCreate", new Action <dynamic>(handleSkinCreate));

            Game.PlayerPed.IsPositionFrozen = true;

            if (skinData != null)
            {
                AdditionalSaveData.PrimaryHairColor   = (byte)skinData.PrimaryHairColor;
                AdditionalSaveData.SecondaryHairColor = (byte)skinData.SecondaryHairColor;
            }
            InteractionUI.Observer.CloseMenu(true);
        }