Table of Contents

Class UITKPetControl

Namespace
FishMMO.Client
Assembly
FishMMO.Client.dll

UI Toolkit pet control panel. Shows the pet's name and health, and issues follow/stay/summon/release commands.

public class UITKPetControl : UITKCharacterControl
Inheritance
Object
Component
Behaviour
MonoBehaviour
UITKPetControl
Inherited Members
MonoBehaviour.IsInvoking()
MonoBehaviour.CancelInvoke()
MonoBehaviour.StopCoroutine(Coroutine)
MonoBehaviour.StopAllCoroutines()
MonoBehaviour.destroyCancellationToken
MonoBehaviour.useGUILayout
MonoBehaviour.didStart
MonoBehaviour.didAwake
MonoBehaviour.runInEditMode
Behaviour.enabled
Behaviour.isActiveAndEnabled
Component.GetComponent<T>()
Component.TryGetComponent<T>(out T)
Component.GetComponentInChildren<T>()
Component.GetComponentsInChildren<T>()
Component.GetComponentInParent<T>()
Component.GetComponentsInParent<T>()
Component.GetComponents<T>()
Component.GetComponentIndex()
Component.CompareTag(TagHandle)
Component.transform
Component.transformHandle
Component.gameObject
Component.tag
Object.GetEntityId()
Object.GetInstanceID()
Object.GetHashCode()
Object.InstantiateAsync<T>(T)
Object.InstantiateAsync<T>(T, Transform)
Object.InstantiateAsync<T>(T, Vector3, Quaternion)
Object.InstantiateAsync<T>(T, Transform, Vector3, Quaternion)
Object.Instantiate(Object, Vector3, Quaternion)
Object.Instantiate(Object, Vector3, Quaternion, Transform)
Object.Instantiate(Object)
Object.Instantiate(Object, Scene)
Object.Instantiate<T>(T, InstantiateParameters)
Object.Instantiate<T>(T, Vector3, Quaternion, InstantiateParameters)
Object.Instantiate(Object, Transform)
Object.Instantiate<T>(T)
Object.Instantiate<T>(T, Vector3, Quaternion)
Object.Instantiate<T>(T, Vector3, Quaternion, Transform)
Object.Instantiate<T>(T, Transform)
Object.Destroy(Object)
Object.DestroyImmediate(Object)
Object.DontDestroyOnLoad(Object)
Object.DestroyObject(Object)
Object.FindObjectsOfType<T>()
Object.FindObjectsByType<T>(FindObjectsSortMode)
Object.FindObjectsByType<T>(FindObjectsInactive, FindObjectsSortMode)
Object.FindObjectOfType<T>()
Object.FindFirstObjectByType<T>()
Object.FindAnyObjectByType<T>()
Object.FindFirstObjectByType<T>(FindObjectsInactive)
Object.FindAnyObjectByType<T>(FindObjectsInactive)
Object.FindObjectsByType<T>()
Object.FindObjectsByType<T>(FindObjectsInactive)
Object.ToString()
Object.name
Object.hideFlags

Remarks

The pet's health is a live value, so this panel subscribes to the pet's health attribute rather than sampling it once at summon time. It previously read the attribute exactly twice — on summon and on character set — and then never again, so the bar showed the pet's health at the moment it appeared for the pet's whole life.

The fill fraction was also inverted (FinalValue / CurrentValue), which reads as a full bar at any health at all and an over-full one below half, and the name block set the GUILD label active inside a check on the NAME label.

Properties

Layer

Draw order tier for this panel. See UITKPanelLayer.

protected override UITKPanelLayer Layer { get; }

Property Value

UITKPanelLayer

Methods

OnAfterShow()

Called at the end of Show(), against the tree the player will actually see. Override to write content that changes from one opening to the next.

protected override void OnAfterShow()

Remarks

This exists because "set the text, then Show" does not work and fails silently. UnityEngine.UIElements.UIDocument clones the UXML on enable, so a panel that fills in its message, list rows or icon before calling Show() writes into a tree that is thrown away microseconds later, and the player sees whatever the UXML declares — an empty dialog, a blank tooltip, a selector with no rows.

Distinct from OnAfterStarting(), which re-applies state after the tree is rebuilt. This one runs on every show, rebuilt tree or not.

OnAfterStarting()

Re-applies the character once the visual tree exists.

protected override void OnAfterStarting()

Remarks

World entry calls FishMMO.Client.UIManager.SetCharacter(FishMMO.Shared.Core.IPlayerCharacter) for every control at once, and a control that starts hidden has no visual tree until something shows it — so OnPostSetCharacter() can run before OnStarting has cached any elements. Overrides that write into those elements would then dereference null, and even a null-safe one would leave the panel showing nothing, because the only call that had data already happened. Running it again here is what makes the two orders equivalent.

OnAttackWithPet()

Orders the pet to attack the player's current target.

public void OnAttackWithPet()

Remarks

Names the target frame — the pinned target when one is held, else whatever is hovered — so the pet goes at what the player is looking at in the HUD rather than at whatever the camera centre happens to trace. The server verifies the claim before acting on it; see PetAttackBroadcast.

OnDestroying()

Releases the static pet subscriptions and the pet health subscription.

public override void OnDestroying()

OnFollowPet()

Sends a follow command to the pet.

public void OnFollowPet()

OnPostSetCharacter()

Binds the panel to whatever pet the character already has.

public override void OnPostSetCharacter()

OnPreSetCharacter()

Releases the outgoing character's pet binding before a new character is applied.

public override void OnPreSetCharacter()

OnPreUnsetCharacter()

Releases the pet binding and resets the panel.

public override void OnPreUnsetCharacter()

OnPriorityMoveUp(int)

Moves the step in slot one place earlier, remembers the new order and asks the server to adopt it.

public void OnPriorityMoveUp(int slot)

Parameters

slot int

Remarks

Applied locally at once so the rows respond to the click; the server's confirmation then arrives through PetController_OnPetOrdersChanged(Pet) and, being the order in force, overwrites whatever is shown. The local copy is stored regardless of whether a pet is out, because the preference is the player's and the pet is only its current audience — it is replayed on the next summon.

OnReleasePet()

Sends a release command to the pet.

public void OnReleasePet()

OnStanceAggressive()

Requests the aggressive stance.

public void OnStanceAggressive()

OnStanceDefensive()

Requests the defensive stance.

public void OnStanceDefensive()

OnStancePassive()

Requests the passive stance.

public void OnStancePassive()

OnStarting()

Queries elements and wires up the command buttons.

public override void OnStarting()

OnStayPet()

Sends a stay command to the pet.

public void OnStayPet()

OnSummonPet()

Sends a summon command to the pet.

public void OnSummonPet()

OnTogglePriorityPanel()

Shows or hides the attack priority rows.

public void OnTogglePriorityPanel()

PetController_OnPetDestroyed()

Hides the panel when the pet is destroyed.

public void PetController_OnPetDestroyed()

PetController_OnPetOrdersChanged(Pet)

Refreshes the panel when the server confirms a stance or movement order change.

public void PetController_OnPetOrdersChanged(Pet pet)

Parameters

pet Pet

The pet whose orders changed.

PetController_OnPetSummoned(Pet)

Updates the panel when a pet is summoned and makes it visible.

public void PetController_OnPetSummoned(Pet pet)

Parameters

pet Pet

The summoned pet.