Namespace FishMMO.Client
Namespaces
Classes
- 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.ussand 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
DeathBroadcaston 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
DeathBroadcastarriving 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.
- 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
- 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.ussand 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.ussand 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.ussand 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
Labelrenders 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.persistentDataPathinto 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.