Esempio n. 1
0
        private T GetHotkeyActionForPanel <T>(HotkeyActionPanel panel) where T : HotkeyAction
        {
            HotkeyAction[] actionList;
            if (!!panel && _lists.TryGetValue(panel.EventModifiers, out actionList))
            {
                if (actionList[panel.KeyCode - StartKeyCode] is T action)
                {
                    return(action);
                }
            }

            return(default);
Esempio n. 2
0
        private void OnHotkeyActionToggleValueChanged(HotkeyActionPanel actionPanel, bool value)
        {
            if (ChangingVisibility || !value)
            {
                return;
            }

            _changingSelectedAction = true;

            var action = GetHotkeyActionForPanel <HotkeyAction>(actionPanel);

            bool isObjectAction = action is HotkeyObjectAction;

            if (isObjectAction)
            {
                _autoSendCheckbox.DisableComponent();
            }
            else
            {
                _autoSendCheckbox.EnableComponent();
            }

            _inputField.interactable = !isObjectAction;
            _objectImage.enabled     = isObjectAction;

            if (action is HotkeyTextAction textAction)
            {
                _inputField.text = textAction.Text;
                _autoSendCheckbox.checkbox.Checked = textAction.AutoSend;
            }
            else
            {
                _inputField.text = string.Empty;
                _autoSendCheckbox.checkbox.Checked = false;
            }

            if (action is HotkeyObjectAction objectAction)
            {
                if (objectAction.ActionTarget != UseActionTarget.Auto)
                {
                    EnableObjectToggles();
                    SelectObjectToggle(objectAction.ActionTarget);
                }
                else
                {
                    DisableObjectToggles();
                }

                if (!_objectInstance || _objectInstance.Id != objectAction.AppearanceType.Id)
                {
                    _objectInstance = new Core.Appearances.ObjectInstance(objectAction.AppearanceType.Id, objectAction.AppearanceType, 0);
                }
            }
            else
            {
                OpenTibiaUnity.GameManager.InvokeOnMainThread(() => {
                    if (action == null || action is HotkeyTextAction)
                    {
                        _inputField.ActivateInputField();
                        _inputField.MoveTextEnd(false);
                    }
                });

                DisableObjectToggles();

                if (action == null || action is HotkeyTextAction)
                {
                    OpenTibiaUnity.GameManager.InvokeOnMainThread(() => {
                        _inputField.ActivateInputField();
                        _inputField.MoveTextEnd(false);
                    });
                }
            }

            _activeActionPanel      = actionPanel;
            _changingSelectedAction = false;
        }