Table of Contents

Namespace FishMMO.Client

Namespaces

FishMMO.Client.Security

Classes

Billboard
Cartography

The one place the map subsystem asks how good the player's maps are.

CinematicCamera

CinematicCamera moves the camera along a spline path for cinematic effects.

Client

Thin orchestrator for the client. Delegates connection lifecycle to ClientConnectionManager, combat display to ClientCombatDisplay, and fog to ClientFogManager. Handles login server discovery and character lifecycle events that must live on the root GameObject.

ClientAudioSettings

The client's audio volumes: one level per AudioChannel, persisted to configuration, applied at boot, and readable by anything that plays a sound.

ClientCombatDisplay

Handles client-side display of combat events: floating damage/heal numbers, death dialog, resurrect dialog hide, and achievement popups. Extracted from Client.cs.

ClientConnectionManager

Manages client connection lifecycle: connect, disconnect, reconnect with exponential backoff, and connection state tracking. Extracted from Client.cs.

ClientDisplaySettings

Everything the client knows about display modes: which ones the hardware offers, which one the player saved, and how to put one into effect.

ClientFogManager

Manages fog transitions triggered by region changes. Extracted from Client.cs.

ClientInteractableStateSystem

Applies server-authoritative world state for interactables that change the scene rather than opening a window.

ClientLauncher

Orchestrates the client launcher's UI, news display, version checking, and patching process by delegating responsibilities to specialized services.

ClientLoginAuthenticator

FishNet client-side authenticator MonoBehaviour for the FishMMO login flow. Thin adapter over the engine-independent ClientAuthenticatorCore state machine: translates abstract send/disconnect/result callbacks into FishNet broadcasts and connection control, and routes incoming FishNet broadcasts back into the core.

ClientMapSystem

The state both map panels share: which scene is being mapped, how much of it the character has explored, what they have pinned to it, and the overhead camera that photographs it.

ClientNamingSystem

The ClientNamingSystem class is responsible for managing the mapping between character and object IDs and their corresponding names in the FishMMO game client. It handles the registration and unregistration of naming broadcasts, as well as the storage and retrieval of name-ID mappings.

ClientPostbootSystem

Manages the client-side post-boot operations, including camera state management and scene loading.

ClientSSLCertificateHandler

Custom SSL certificate handler for UnityWebRequest on the client.

Delegates all validation to ClientCertificatePinning which performs SHA-256(SPKI) pinning plus temporal-validity checks via BouncyCastle. Configure pins during client bootstrap with ClientCertificatePinning.Configure(...).

ClientSettings

The client's single owner of GlobalSettings: it creates the store, names every key exactly once, clamps everything read out of it, and owns the one debounced write that puts it back on disk.

ClientSettingsBootstrap

Loads the client's configuration and applies the player's settings during boot.

DownloadRateTracker

Measures transfer rate over a trailing time window and estimates remaining time.

FogOfWarDefaults

Defaults for the fog grid, in one place so the store, the map and the definition's override all agree.

FogOfWarMap

The part of a scene a character has explored, as a grid of coverage values over the scene's map rectangle.

FogOfWarStore

Reads and writes a character's explored-territory maps on the local machine.

HotkeyKeyMap

Maps hotkey slot indices to the input names bound to them.

HttpPatchServerService

Unity-backed patch service implementation for endpoint discovery, version checks, and patch downloads.

InstallSizeProbe

Measures how much disk space the installation occupies, without blocking the launcher.

ItemOperationTracker

The client's record of which item slots are waiting on the server, shared by the inventory, bank and equipment panels.

ItemSlotPendingSet

Tracks which slots of one item container have a request outstanding with the server.

LauncherLinkPolicy

Decides whether a link found in launcher news content may be handed to the operating system's URL handler, and opens it when it may.

LauncherSettings

Typed access to the launcher's persisted settings, stored in the shared GlobalSettings file alongside the game's other options.

LoginKeys

Shared keyboard wiring for the login-flow panels: Enter submits, Escape backs out, and Tab walks the fields in the order they are authored.

LoginNotice

A retrying queue for login-flow messages that must always reach the player.

MapContent

Turns the map's non-entity content — authored landmarks and the player's own notes — into the same snapshots the marker filter produces for live objects.

MapFilters

Which marker categories the player currently wants to see, remembered between sessions.

MapMarkerFilter

Decides which markers the local player may see, and at what fidelity.

MapNote

A marker the player placed on the world map themselves: a title, an optional line of text, a colour, and a place.

MapNoteStore

Reads and writes the notes a character has pinned to a scene's map.

MapRelationshipTracker

Keeps track of which character IDs are in the local player's party and guild, and answers what the local player's relationship to another character is.

MinimapCameraRenderer

Owns the overhead camera that photographs the world for the minimap, and renders it at a capped rate into a texture the UI draws.

NativeFolderPicker

Opens the operating system's "choose a folder" dialog.

PendingReplyGuard

Watchdog for a UI control that has been disabled while waiting for a server reply.

PlayerInputController

Handles player input using the new Unity Input System and converts it to character actions. Subscribes to input action callbacks and manages UI toggles, movement, camera, and context menus.

ReferenceButton

Constants shared by every UI element that carries a reference to an inventory item, equipped item, bank item or ability.

RemoteText

Builds UnityEngine.UIElements.Labels for text that came from somewhere this client does not control, and sanitises such text before it reaches a log line.

SystemUpdaterLauncher

Starts the standalone updater executable and hands control over to it.

UIManager

Registry and lifecycle helper for the client's UI Toolkit panels.

UIProfile

Reads and writes a UI profile: the player's window layout, theme colours and interface scale, in a file of its own that can be handed to somebody else.

UITKAbilities

UI Toolkit abilities panel. Renders the character's abilities, known abilities, and known ability events as tabbed icon slots. Hovering shows the entry tooltip; left-clicking a known ability picks it up onto the shared drag object so it can be assigned to a hotkey.

UITKAbilityCraft

UI Toolkit ability crafting panel. The player selects a base ability for the main entry and optional ability events for each additional event slot, then crafts the resulting ability for a currency cost. Slot buttons are built at runtime rather than instantiated from a prefab, and use the shared UITKSelector for picking and UITKTooltip for hover info.

UITKAchievements

UI Toolkit achievements panel. Renders achievement category buttons and, for the selected category, each achievement's icon, description, progress bar, and value.

UITKAdvancedLabel

A transient caption drawn at a screen position, with optional fade and upward drift. Used for region names and similar one-off announcements.

UITKBank

UI Toolkit implementation of the bank panel. Binds to UIBank.uxml / UIBank.uss and renders the character's bank as a grid of slot buttons. Item drag-and-drop and tooltips reuse the shared UITKDragObject and UITKTooltip overlays via UIManager.

UITKBuff

UI Toolkit container that renders the local player's active (positive) buffs.

UITKBuffContainer

Abstract UI Toolkit container that renders a horizontal strip of buff or debuff icons, each with a depleting duration fill. Buff groups are built dynamically as VisualElements, so no prefab reference is required.

UITKCallbackDialog

Base class for the shared, singleton, answer-with-a-callback panels: the confirmation dialog, the text-input dialog and the list selector.

UITKCapturePoint

UI Toolkit implementation of the capture point objective readout. Binds to UICapturePoint.uxml / UICapturePoint.uss.

UITKCastBar

UI Toolkit cast bar bound to the character's ability controller. Displays casting progress and the cast label, and hides itself when the cast completes or is cancelled. Progress is driven as a percentage of the fill element's width.

UITKCharacterControl

Abstract base class for UI Toolkit controls that are bound to a player character. Extends UITKControl with the character set/clear lifecycle that UIManager drives on world entry and exit.

UITKCharacterCreate

UI Toolkit implementation of the character creation control. Provides race/model/location selection and a name field, then broadcasts the creation request to the server.

UITKCharacterSelect

UI Toolkit implementation of the character selection control. Lists the account's characters, allows selecting/connecting/deleting and entering character creation.

UITKChat

UI Toolkit implementation of the in-world chat window: channel-coloured messages, tab-based channel filtering, rate limiting, sanitisation and the full set of per-channel message handlers.

UITKChatChannelPicker

UI Toolkit chat channel picker. Lets the player toggle which chat channels a tab listens to and rename the current tab.

UITKClientLauncher

Renders the launcher through a UI Toolkit UnityEngine.UIElements.UIDocument.

UITKColorPicker

UI Toolkit color picker supporting an HSV picking texture plus H/S/V and R/G/B/A sliders, inputs and a hex field. Spectrum textures are generated via TinyColor and bound to element background images.

UITKContainer

UI Toolkit implementation of the world container panel — chests, crates, wardrobes. Binds to UIContainer.uxml / UIContainer.uss.

UITKContextMenu

A floating context menu that displays a dynamic list of action buttons at the mouse position. Used for right-click interactions on player targets (Inspect, Add Friend, Invite to Party, Trade).

UITKControl

Abstract base class for UI Toolkit-backed controls. Drives a UnityEngine.UIElements.UIDocument and owns the show/hide, focus, drag and Escape-close behaviour every panel shares. Automatically registers and unregisters with UIManager on Awake/OnDestroy.

UITKCrosshair

UI Toolkit crosshair control. Shows or hides the crosshair based on the current mouse mode.

UITKDeathDialog

Death dialog shown when the local player dies. Offers two options: "Respawn at Bind Point" (always visible) and "Accept Resurrect" (appears when another player casts resurrect on the corpse). Sends the appropriate broadcast on button click and hides on success.

There is deliberately no close button. Respawning or being resurrected are the only ways out of the dead state, and both are reached through this dialog — a control that merely dismissed it would leave the player a corpse with no route back, because the server only re-sends DeathBroadcast on scene entry.

Two properties keep a character from getting stuck dead:

  • It opens from state, not just from a message. A character that arrives already dead — a login while dead, or a scene transfer while dead — surfaces the dialog from OnPostSetCharacter(), which reads the replicated IsDead flag out of the spawn payload. That does not depend on a DeathBroadcast arriving at the right moment relative to the world GUI scene finishing its load.
  • It confirms rather than assumes. Clicking an action used to hide the dialog immediately, so a request the server declined — its respawn/resurrect ingress guard debounces at two seconds — left the player dead with no UI and no way to ask again. The dialog now stays up until the character is actually observed alive, and re-arms itself if that never happens.
UITKDebuff

UI Toolkit container that renders the local player's active debuffs (negative effects).

UITKDialogBox

UI Toolkit confirmation dialog. Shows a message with accept/cancel buttons and invokes optional callbacks.

UITKDialogInputBox

UI Toolkit input dialog. Shows a message with a text field and accept/cancel buttons, invoking a callback with the entered text.

UITKDragObject

UI Toolkit drag object. Displays a dragged icon that follows the cursor and carries the identity of whatever the drag was started from until something drops or cancels it.

UITKDropdown

UI Toolkit dropdown / context menu. Dynamically builds buttons and toggles and positions itself at the mouse cursor.

UITKDungeonFinder

UI Toolkit dungeon finder: describes a dungeon, offers its difficulties, lists the runs currently open at the chosen one, and lets the player join one or start their own.

UITKEquipment

UI Toolkit implementation of the equipment panel. Binds to UIEquipment.uxml / UIEquipment.uss and renders the character's equipped items alongside the attributes they contribute to.

UITKFactions

UI Toolkit factions panel. Renders each known faction as a row with icon, name, description, a coloured standing bar, and the numeric standing value. Standing colour reflects positive/neutral/negative reputation.

UITKFriendList

Friend list panel. Renders each friend as a row carrying a presence dot, name, status and a remove button, and handles the add and remove actions. Rows are built at runtime rather than cloned from a per-entry control, and the shared dialog panels are reused for the prompts.

UITKGathering

UI Toolkit implementation of the gathering progress bar. Binds to UIGathering.uxml / UIGathering.uss.

UITKGuild

UI Toolkit guild panel. Two pages — a filterable member roster and an information page carrying the guild's notice, message of the day and leadership actions — plus a per-member context menu and hover card. The shared dialog and context-menu overlays are resolved by name through the UIManager rather than referenced directly.

UITKHealthBar

UI Toolkit health bar. Inherits resource bar logic from UITKResourceBar.

UITKHotkeyBar

UI Toolkit hotkey bar. Renders the character's hotkey slots as dynamically generated VisualElements and owns their network behaviour: HotkeySetBroadcast / HotkeySetMultipleBroadcast assignment, cooldown sweeps via ICooldownController, drag-assign / drag-clear via the shared UITKDragObject overlay, and Input System activation.

UITKHtmlContentRenderer

Renders a parsed launcher news fragment into a tree of UnityEngine.UIElements.VisualElements.

UITKInspect

Displays another player character's name and equipment by reading their in-memory data directly. All character data is already synchronised to observers via WritePayload/ReadPayload, so no server round-trip is required.

UITKInstance

UI Toolkit instance-management panel. Shows which instance the character is in, how long it has left, and who else is in it; lets the member who opened it remove others, and lets anyone leave.

UITKInventory

UI Toolkit implementation of the inventory panel. Binds to UIInventory.uxml / UIInventory.uss and renders the character's inventory as a grid of slot buttons. Item drag-and-drop and tooltips reuse the shared UITKDragObject and UITKTooltip overlays via UIManager.

UITKItemIcon

Paints an item's icon into a slot or drag-ghost element, falling back to a visible placeholder when the item's template has no icon assigned.

UITKLabelMaker

Manages a pool of reusable UITKWorldLabel instances for efficient world-anchored text, drawn by UITKWorldLabelLayer.

UITKLoadingScreen

UI Toolkit implementation of the loading screen. Displays a transition image and a progress bar driven by addressable load progress and FishNet scene load events.

UITKLogin

UI Toolkit implementation of the login control providing identifier/password input, registration access, sign-in and the full authentication-result handling flow.

UITKLoot

UI Toolkit implementation of the corpse loot panel. Binds to UILoot.uxml / UILoot.uss and renders a dead NPC's contents as a list of rows plus a currency line.

UITKLore

UI Toolkit implementation of the lore object panel. Binds to UILore.uxml / UILore.uss.

UITKMail

UI Toolkit implementation of the mailbox panel. Binds to UIMail.uxml / UIMail.uss.

UITKManaBar

UI Toolkit mana bar. Inherits resource bar logic from UITKResourceBar.

UITKMap

The world map: a large, pannable, zoomable view of the whole scene, drawn over the baked overhead image, with the player's explored ground, every marker they may see, the scene's authored landmarks, and the notes they have pinned to it.

UITKMapView

The map itself: terrain image, fog of war, markers, and the chrome that sits over them. Used by both the minimap and the world map.

UITKMenu

UI Toolkit main menu control. Provides access to the options panel, returning to the login screen, and quitting the game.

UITKMerchant

UI Toolkit merchant panel. Receives the merchant template via a server broadcast and renders its items, abilities, and ability events as tabbed entry slots, plus a Sell tab listing the character's own inventory. Selecting an entry opens the transaction footer, where a quantity is chosen and the trade explicitly confirmed.

UITKMinimap

The heads-up minimap: a live overhead view centred on the player, with markers, fog of war, a location readout and a way into the world map.

UITKNPCDialogue

UI Toolkit NPC dialogue panel. Receives server-authoritative dialogue state via broadcasts, renders the speaker, body text, and dynamic choice buttons, and sends the player's choice back to the server for validation.

UITKOptions

The client's settings panel: five tabs — Display, Audio, Gameplay, Key Bindings and UI — each built in code and bound directly to GlobalSettings through ClientSettings.

UITKPanelPositions

Stores where the player has dragged each panel, and the grid those drags snap to.

UITKPanelScale

Scales the whole interface by adjusting the shared UnityEngine.UIElements.PanelSettings reference resolution.

UITKParty

UI Toolkit party panel. Renders party members as horizontal bands — identity, stacked health/mana/stamina bars, per-encounter damage and healing meters, and the member's buffs and debuffs — and handles create/leave/invite plus a per-member context menu (message / add friend / promote / kick). The shared dialog and context-menu overlays are resolved by name through the UIManager rather than referenced directly.

UITKPetControl

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

UITKReconnectDisplay

UI Toolkit implementation of the reconnect display. Shows reconnect attempt progress and allows cancelling the reconnect attempt.

UITKRegister

UI Toolkit implementation of the registration control providing username, email, password, age confirmation and an optional key field for account creation.

UITKResourceBar

Abstract UI Toolkit resource bar (health/mana/stamina) bound to a character attribute. The value is rendered as a fill VisualElement whose width is a percentage of the bar, and smoothly interpolates toward the target value to avoid jitter from prediction corrections.

UITKRichText

Translates the TextMeshPro rich-text markup produced across FishMMO-Shared into markup a UI Toolkit Label renders correctly.

UITKSceneChannel

UI Toolkit scene-channel picker. Lists the other instances ("channels") of the open-world scene the character is standing in, and asks the server to move the character to the one the player chooses.

UITKScreenSpace

Screen-to-panel conversion and edge clamping for the cursor-anchored widgets — the tooltip, the dropdown and the context menu.

UITKSelector

UI Toolkit selector. Presents a list of selectable cached objects, lets the user pick one, and confirms or cancels the selection. Each option row is a plain UnityEngine.UIElements.Button, so no separate tooltip-button class is required.

UITKServerSelect

UI Toolkit implementation of the world server selection control. Displays the available world servers, allows selecting and connecting to one, and refreshing the list.

UITKShrine

UI Toolkit implementation of the shrine feedback line. Binds to UIShrine.uxml / UIShrine.uss.

UITKStaminaBar

UI Toolkit stamina bar. Inherits resource bar logic from UITKResourceBar.

UITKTarget

UI Toolkit target frame. Shows the current target's name (faction-coloured), a health bar, its faction standing, and strips of the buffs and debuffs the SERVER has chosen to show observers. The overhead 3D label, outline and faction colouring are rendering-agnostic and driven from here rather than from the visual tree.

UITKTheme

The set of colours a player may override, parsed once from configuration.

UITKThemeManager

Applies the player's colour overrides to every registered UI Toolkit panel.

UITKTooltip

UI Toolkit tooltip control. Displays a text box near the mouse cursor and keeps it inside the panel.

UITKWorldLabel

A poolable world-anchored label, drawn by UITKWorldLabelLayer. Supports automatic caching after a timed duration or manual caching via Cache(UITKWorldLabel). Visual effects are driven by a LabelEffect bit-flag field and processed each frame; multiple effects combine (e.g. FadeOut + FloatUp + ScaleDown).

UITKWorldLabelLayer

Draws every active WorldLabel as a UI Toolkit element, projecting each one from its world position onto this screen-space panel each frame.

UnityHtmlContentFetcher

Fetches launcher news HTML and extracts the configured content fragment from it.

UnityWebRequestService

Provides shared UnityWebRequest execution with retry, timeout, and progress callbacks.

UnityWebRequestService.WebRequestConfig

Configuration object for web requests.

WebGLKeyHijack

This class will hijack web browser key listeners which will help WebGL builds stay contained.

WebGLPersistentData

Pushes files written under Application.persistentDataPath into the browser's IndexedDB, so they survive the page being closed.

Structs

DownloadStats

A snapshot of an in-progress download, passed to the active ILauncherView so it can present transfer state.

MapMarkerSnapshot

One marker as the map should draw it this refresh: where it is, what it looks like, and what the player is allowed to be told about it.

MapViewTransform

The window a map panel is showing: where it is centred in the world, how much of the world it covers, and which way is up.

PatchInfo

Metadata describing the patch the server has for a given client version. Returned alongside the parsed latest VersionConfig from GetLatestVersion(string, string, Action<VersionConfig, PatchInfo>, Action<string>).

VersionFetch

Structure to parse the JSON response from the /latest_version endpoint.

NOTE: The fields below use snake_case naming as a deliberate JSON contract exception. JsonUtility.FromJson maps directly to these field names; renaming them to PascalCase would break deserialization of the server response.

Interfaces

ICartographyProvider

Supplies the local character's Cartography skill level to the map subsystem.

IHtmlContentFetcher

Contract for fetching remote HTML content and extracting the launcher's news fragment from it.

ILauncherView

The presentation surface ClientLauncher drives, keeping the launcher's state machine, version check and patch flow in exactly one place rather than coupled to a widget tree.

IPatchServerService

Contract for version lookups and patch binary downloads. All methods use a single API host URL (NGINX routes by path to the correct backend).

IUpdaterLauncher

Contract for launching and monitoring the external updater process.

Enums

AbilityTabType

Tabs available in the abilities panel.

AudioChannel

The volume groups a player can set independently.

LabelEffect

Bit-flag positions for visual effects on UITKWorldLabel. Combine with IntBitExtensions to enable multiple effects simultaneously.

int flags = 0;
flags.EnableBit(LabelEffect.FadeIn);
flags.EnableBit(LabelEffect.FloatUp);
flags.EnableBit(LabelEffect.ScaleUp);
UITKLabelMaker.Display3D("Hit!", pos, Color.red, 2f, 1f, false, flags);
LauncherState

Defines the possible states of the launcher's main action button and overall UI.

MapFilterCategory

The groups of markers the world map lets the player switch on and off.

MapRelationship

How the local player stands towards the thing a map marker is attached to.

ReferenceButtonType

Types of reference buttons used in UI, such as inventory, equipment, bank, and ability buttons.

ServerConnectionType

Represents the type of server connection the client is currently using. Used to track connection state transitions in the client.

UITKPanelLayer

Draw and input order for UI Toolkit panels, applied to UIDocument.sortingOrder.