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);
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; }