Aller au contenu principal

Référence de l'API

Répertoire complet des classes, structures et interfaces de RadialMenuUI.


1. RadialMenuDef

Représente la définition complète d'une roue radiale.

MembreTypeDescription
IdstringIdentifiant stable du menu.
SlotCountintNombre de secteurs (3 à 10, ou 12).
EntriesList<RadialEntryDef>Liste des entrées positionnées sur les secteurs.
ThemeRadialMenuThemeThème spécifique optionnel pour ce menu.
AddEntry(entry)RadialMenuDefAjoute une entrée et retourne l'instance pour enchaînement.
WithCenterRuntimeIcon(dict, tex)RadialMenuDefAffiche une texture GTA (ex. headshot) dans le moyeu.
WithTheme(theme)RadialMenuDefAssigne un thème personnalisé.

2. RadialEntryDef

Représente un secteur sélectionnable sur la roue.

MembreTypeDescription
IdstringIdentifiant stable retourné à la confirmation.
SlotIndexintNuméro de tranche (0 = haut / 12h, sens horaire).
LabelstringTexte affiché dans le moyeu au survol.
IconKeystringClé d'icône résolue par le thème.
IconFilestringChemin relatif direct vers un fichier PNG.
EnabledboolIndique si l'entrée peut être survolée et validée.
VariantsList<RadialVariantDef>Liste des variantes sélectionnables sur ce secteur.
SubmenuRadialMenuDefSous-menu enfant ouvert par cette entrée.
WithIcon(key)RadialEntryDefAssigne la clé d'icône.
WithIconScale(float)RadialEntryDefMultiplicateur d'échelle pour l'icône.
WithSubmenu(submenu)RadialEntryDefAttache un sous-menu enfant.
AddVariant(id, label)RadialEntryDefAjoute une variante horizontale.
KeepOpenAfterConfirm()RadialEntryDefConserve la roue ouverte après validation.
OnConfirmed(action)RadialEntryDefDéfinit une action de rappel locale pour cette entrée.

3. RadialMenuController

Gère le cycle de vie, l'état, les survols, la pile de navigation et le rendu.

MembreTypeDescription
IsOpenboolIndique si la roue est actuellement ouverte à l'écran.
HoveredSlotintIndex de la tranche actuellement survolée (-1 si aucune).
CurrentRadialMenuDefDéfinition de menu actuellement affichée.
Open(def)voidOuvre une définition de menu.
CancelAndClose()voidFerme le menu sans exécuter d'action.
ConfirmAndClose(raiseEvent)boolConfirme l'entrée survolée et referme la roue.
Update()voidTraite les entrées, calcule les survols et dessine une frame.
QueueWarmup(theme)voidEnfile le préchargement progressif des textures.
WarmupOneTexture()voidCrée au maximum une texture ScriptHookV par appel.
ResultConfirmedeventÉvénement déclenché lors d'une sélection validée.
SelectionChangedeventÉvénement déclenché lorsque la tranche survolée change.

4. RadialMenuResult

Transmis aux callbacks lors de la validation d'une action.

PropriétéTypeDescription
MenuIdstringIdentifiant du menu d'origine de l'action.
EntryIdstringIdentifiant de l'entrée validée.
SlotIndexintNuméro de tranche de l'entrée validée.
EntryLabelstringLibellé de l'entrée validée.
VariantIdstringIdentifiant de la variante sélectionnée (ou null).
VariantLabelstringLibellé de la variante sélectionnée (ou null).

5. Entrées & entrée personnalisée

Le contrôleur et le gameplay host ne consomment que IRadialMenuInput, jamais les contrôles GTA directement. Remplacer l'adaptateur modifie tous les bindings en laissant intactes la logique de navigation et l'ensemble des contrôles bloqués.

IRadialMenuInput

MembreDescription
BeginFrame()Démarre une nouvelle image d'entrée et réinitialise l'état transitoire de l'adaptateur.
ResetForOpen()Recalibre l'entrée à l'ouverture d'une roue.
TryGetDirection(out angleDegTopBased, out magnitude)Lit la direction en degrés dans le sens horaire depuis le haut (0 = en haut) et sa magnitude ; retourne true quand l'entrée est active hors zone morte.
NextVariantPressed()True une fois quand la commande de variante suivante est pressée.
PrevVariantPressed()True une fois quand la commande de variante précédente est pressée.
OpenSubmenuPressed()True une fois quand la commande d'ouverture de sous-menu est pressée.
BackToParentPressed()True une fois quand la commande de retour au parent est pressée.
ConfirmPressed()True une fois quand une confirmation en mode clic est pressée.
HoldPressed()True tant que la commande maintien-pour-ouvrir reste pressée.
ConfirmReleased()True une fois quand la commande maintien-pour-ouvrir est relâchée.
CancelPressed()True une fois quand une annulation en mode clic est pressée.

Bindings par défaut (GtaRadialMenuInput)

CommandeManetteClavier / Souris
Direction du survolStick droit (ScriptRightAxisX/Y)Curseur souris (canvas virtuel 1280×720) — le périphérique le plus récemment bougé garde la main
Confirmer (mode clic)R2 / Attack, FrontendAcceptEntrée ou clic gauche
Confirmer (mode maintien)Relâcher SelectWeapon (L1 / TAB)Relâcher TAB
Maintenir pour ouvrir/fermerMaintenir SelectWeapon (L1 / TAB)Maintenir TAB
Ouvrir un sous-menuCarré / X (Attack neutralisé)Clic gauche
Retour au parentL2 / LT (Aim neutralisé)Clic droit
Variante suivanteRB, D-pad droite, SelectNextWeaponMolette haut,
Variante précédenteLB, D-pad gauche, SelectPrevWeaponMolette bas,
Annuler (mode clic)O / B (FrontendCancel)Échap / Retour arrière

Ces bindings sont codés en dur dans GtaRadialMenuInput et ne peuvent pas être reconfigurés via des flags de configuration. Pour changer les commandes, implémentez votre propre IRadialMenuInput (voir ci-dessous).

Exemple d'entrée personnalisée

L'exemple ci-dessous associe la navigation à des touches personnalisées au lieu des valeurs GTA par défaut — le contrôleur ne se soucie pas de quels contrôles produisent les commandes :

using System.Windows.Forms;
using GTA;
using RadialMenuUI;

public class CustomInput : IRadialMenuInput
{
public void BeginFrame() { }

public void ResetForOpen() { }

public bool TryGetDirection(out float angleDegTopBased, out float magnitude)
{
magnitude = 1f;
if (Game.IsKeyPressed(Keys.Up)) { angleDegTopBased = 0f; return true; }
if (Game.IsKeyPressed(Keys.Right)) { angleDegTopBased = 90f; return true; }
if (Game.IsKeyPressed(Keys.Down)) { angleDegTopBased = 180f; return true; }
if (Game.IsKeyPressed(Keys.Left)) { angleDegTopBased = 270f; return true; }
angleDegTopBased = 0f;
return false;
}

public bool NextVariantPressed() => Game.IsKeyJustPressed(Keys.E);
public bool PrevVariantPressed() => Game.IsKeyJustPressed(Keys.Q);
public bool OpenSubmenuPressed() => Game.IsKeyJustPressed(Keys.Enter);
public bool BackToParentPressed() => Game.IsKeyJustPressed(Keys.Back);
public bool ConfirmPressed() => Game.IsControlJustPressed(Control.FrontendAccept);
public bool HoldPressed() => false;
public bool ConfirmReleased() => false;
public bool CancelPressed() => Game.IsKeyJustPressed(Keys.Escape);
}

var controller = new RadialMenuController(new CustomInput());

6. RadialMenuGameplayHost

Wrapper clé en main associant RadialMenuController, ralenti cinématique et blocage des contrôles GTA.

MembreDescription
Process(canOpen, buildMenu)Méthode d'actualisation par tick gérant ouverture, blocage et fermeture.
Open(menu)Ouvre un menu avec ralenti et blocage des commandes.
Close()Ferme le menu et restaure la vitesse normale du monde.
IsOpenIndique si le menu hébergé est visible.